C ++:OpenSSL,aes cfb加密

时间:2014-07-20 15:19:45

标签: encryption openssl

我有一个简单的问题:前16个字节未正确加密/解密。 有什么问题?

加密函数将其写入文件,解密函数再次从文件中读取它。

int inum = 0;

unsigned char ckey [] = "3q43*_;fsdf#ßß94";
unsigned char civ  [] = "sfgsjni274z#-,.-";

加密:

unsigned char outdata [4096 + 1];

AES_KEY key;

AES_set_encrypt_key(ckey, 128, &key); 

AES_cfb128_encrypt((const unsigned char *) "aaaaaaaaaaaaaaaaa", outdata, 17, &key, civ, &inum, AES_ENCRYPT);

解密:

indata由读取函数

设置
AES_KEY key;

AES_set_encrypt_key(ckey, 128, &key);

AES_cfb128_encrypt(indata, outdata, iSize, &key, civ, &inum, AES_DECRYPT);

输出将是:

‡~MÚjô±¦¤,`Ð,-âa

原始字符串长度为17个字节,因此最后一个字节是正确的。

前16个字节后面的字符总是正确的,我已经用多个字符串对它进行了测试。

0 个答案:

没有答案