Я просто пытаюсь выполнить шифрование и дешифрование с использованием OpenSSL. Это код, который я нашел в StackOverflow:
Текст для шифрования: = "a1 45 91 из 8d 3c 75 53 7a b7 a9 ef 62 d7 d7 a7" ключ 256 байтов = "ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF123 * 83867
87 *Проблема в том, что я не знаю, как работают AES_encrypt и AES_decrypt и как должен быть ввод?
#include <stdio.h>
#include <openssl/aes.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/rand.h>
//static const unsigned char key[]={01234567890123456789012345678900};
int main()
{
int keylength;
printf("Give a key length [only 128 or 192 or 256!]:\n");
scanf("%d", &keylength);
/* generate a key with a given length */
unsigned char aes_key[keylength/8];
memset(aes_key, 0, sizeof(aes_key));
aes_key[32] = "";
/*if (!RAND_bytes(aes_key, keylength))
{
exit(-1);
}*/
aes_key[keylength-1] = '\0';
//unsigned char text[] = {"a1", "45","91" ,"de", "8d"," 3c" ,"75" ,"53"," 7a" ,"b7", "a9" ,"ef" ,"62", "d7", "d7", "a7"}; //Assign text to be encrypted
unsigned char text[]= "a14591de8d3c75537ab7a9ef62d7d7a7";
unsigned char enc_out[AES_BLOCK_SIZE]; //Set to 16 bytes
unsigned char dec_out[AES_BLOCK_SIZE];
AES_KEY enc_key, dec_key; //establish AES enc and dec key
AES_set_encrypt_key(aes_key, 128, &enc_key);
AES_encrypt(text, enc_out, &enc_key);
AES_set_decrypt_key(aes_key, 128, &dec_key);
AES_decrypt(enc_out, dec_out, &dec_key);
int x;
printf("original:\t");
for(x=0;*(text+x)!=0x00;x++)
printf("%X ",*(text+x));
printf("\nencrypted:\t");
for(x=0;*(enc_out+x)!=0x00;x++)
printf("%X ",*(enc_out+x));
printf("\ndecrypted:\t");
for(x=0;*(dec_out+x)!=0x00;x++)
printf("%X ",*(dec_out+x));
printf("\n");
return 0;
}
Команда для компиляции файла: gcc -g open_ssl_1.c -o openssl_aes -lcrypto