OpenSSL AES256 cbc 加密
几天来我试图在互联网上找到合适的例子,但没有成功。我尝试用密钥加密简单的字符串(Hello World),然后解密结果。 但解密结果与原文无关。有人能给我指个方向吗?
我制作的代码:
AES_KEY aes_decryptKey;
AES_KEY aes_encryptKey;
const unsigned char mykey[] = {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
unsigned char encrypted ;
unsigned char iv[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char decrypted;
AES_set_encrypt_key(mykey, 256, &aes_encryptKey);
AES_set_decrypt_key(mykey, 256, &aes_decryptKey);
const unsigned char original[] = {0x48,0x65,0x6c,0x6c,0x6f,0x2c,0x77,0x6f,0x72,0x6c,0x64,0x21};
AES_cbc_encrypt(original, &encrypted, sizeof(original), &aes_encryptKey, iv, 0);
AES_decrypt( &encrypted, &decrypted, &aes_decryptKey);
NSLog(@"ORIGINAL: \"%s\"\n",original);
NSLog(@"ENCRYPTED: \"%s\"\n",&encrypted);
NSLog(@"DECRYPTED: \"%s\"\n",&decrypted);
I tried to find a proper example on the Internet for days but did not succeed. I try to encrypt simple string (Hello World) with a key, then to decrypt the result.
However the decrypted result has nothing to do with the original text. Can anyone point me to a direction please?
The code I made:
AES_KEY aes_decryptKey;
AES_KEY aes_encryptKey;
const unsigned char mykey[] = {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
unsigned char encrypted ;
unsigned char iv[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char decrypted;
AES_set_encrypt_key(mykey, 256, &aes_encryptKey);
AES_set_decrypt_key(mykey, 256, &aes_decryptKey);
const unsigned char original[] = {0x48,0x65,0x6c,0x6c,0x6f,0x2c,0x77,0x6f,0x72,0x6c,0x64,0x21};
AES_cbc_encrypt(original, &encrypted, sizeof(original), &aes_encryptKey, iv, 0);
AES_decrypt( &encrypted, &decrypted, &aes_decryptKey);
NSLog(@"ORIGINAL: \"%s\"\n",original);
NSLog(@"ENCRYPTED: \"%s\"\n",&encrypted);
NSLog(@"DECRYPTED: \"%s\"\n",&decrypted);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您正在解密两次 - AES_cbc_encrypt 的最后一个 0 参数应该是 1 或 AES_ENCRYPT。
此外,您正在覆盖您的加密和解密字符,这些字符应该是足够大的数组来容纳原始的加密大小。而不是:
使用类似:
也类似:
查看此链接: http:// /marc.info/?l=openssl-users&m=122919878204439。我还不能保证这一切——等我有时间的时候我会回来编辑我的答案。
You are decrypting twice -- that last 0 parameter for AES_cbc_encrypt should be a 1 or
AES_ENCRYPT
.Also, you are overwriting your encryption and decryption chars, which should instead be arrays big enough to hold the encrypted size of original. Instead of:
use something like:
And also something like:
Check out this link: http://marc.info/?l=openssl-users&m=122919878204439. I can't vouch for it all yet -- I'll come back and edit my answer later when I have time.
吉姆,谢谢你的帮助。
看来我必须提出问题才能找到答案。
经过很多天的努力,这就是我想出的结果:
感谢这些人(在吉姆之后):http://www.mail-archive.com/[email protected]/msg50142.html
关键是使用 AES_cbc_encrypt 进行解密。
Jim, thanks for your help.
Seems I had to raise a question to find the answer.
After struggling many days this is what I came up with:
Credits to these guys (after Jim): http://www.mail-archive.com/[email protected]/msg50142.html
The key was to use AES_cbc_encrypt to decrypt.