草稿

// Include necessary headers
#include <openssl/evp.h>
#include <openssl/err.h>
#include <openssl/sm4.h>

// Define the key and IV
unsigned char key[16] = "20201327";
unsigned char iv[16] = "20201327";

// Define the plaintext and ciphertext buffers
unsigned char plaintext[] = "20201327";
unsigned char ciphertext[SM4_BLOCK_SIZE];

// Create an SM4 context
SM4_KEY sm4_key;
SM4_set_key(key, &sm4_key);

// Encrypt the plaintext using SM4
SM4_cbc_encrypt(plaintext, ciphertext, sizeof(plaintext), &sm4_key, iv, SM4_ENCRYPT);

// Decrypt the ciphertext using SM4
SM4_cbc_encrypt(ciphertext, plaintext, sizeof(ciphertext), &sm4_key, iv, SM4_DECRYPT);
#include <openssl/evp.h>
#include <openssl/err.h>
#include <openssl/sm4.h>

int main() {
    // Set up key and IV
    unsigned char *key = (unsigned char *)"20201303";
    unsigned char *iv = (unsigned char *)"0123456789abcdef";

    // Set up input and output file names
    char *input_file = "20201303_encrypted";
    char *output_file = "20201303_decrypted";

    // Set up OpenSSL context
    EVP_CIPHER_CTX *ctx;
    ctx = EVP_CIPHER_CTX_new();

    // Initialize SM4 decryption
    EVP_DecryptInit_ex(ctx, EVP_sm4_ecb(), NULL, key, iv);

    // Open input and output files
    FILE *in_file = fopen(input_file, "rb");
    FILE *out_file = fopen(output_file, "wb");

    // Set up buffer for reading and writing
    unsigned char in_buf[1024];
    unsigned char out_buf[1024];
    int num_bytes_read, num_bytes_written;

    // Decrypt input file and write to output file
    while ((num_bytes_read = fread(in_buf, sizeof(unsigned char), 1024, in_file)) > 0) {
        EVP_DecryptUpdate(ctx, out_buf, &num_bytes_written, in_buf, num_bytes_read);
        fwrite(out_buf, sizeof(unsigned char), num_bytes_written, out_file);
    }

    // Finalize decryption
    EVP_DecryptFinal_ex(ctx, out_buf, &num_bytes_written);
    fwrite(out_buf, sizeof(unsigned char), num_bytes_written, out_file);

    // Clean up
    EVP_CIPHER_CTX_free(ctx);
    fclose(in_file);
    fclose(out_file);

    return 0;
}

posted @ 2023-04-18 18:58  20201327刘谨铭  阅读(12)  评论(0编辑  收藏  举报