AES 解密仅适用于前 16 个字符
AES decryption only works for first 16 characters
我正在尝试获得一个简单的 AES encrypt/decrypt 并将 c++ 用于我的计算机科学 class。它几乎完美地工作,但解密只对字符数组的前 16 个字符有效。
这是我的代码:
#include <iostream>
#include "openssl/aes.h"
using namespace std;
int main() {
unsigned char teext[] = "The quick brown fox jumped over the lazy dog";
/*created keys for en- and de-cryption*/
unsigned char key[] = "abcdefghijklmnop";
unsigned char iv[] = "abcdefghijklmnop";
/*char array for encryption and decryption output*/
unsigned char enc_out[80];
unsigned char dec_out[80];
/*creating key variables*/
AES_KEY enc_key, dec_key;
/*encryption process*/
AES_set_encrypt_key(key, 128, &enc_key);
AES_encrypt(teext, enc_out, &enc_key);
/*decryption process*/
AES_set_decrypt_key(iv, 128, &dec_key);
AES_decrypt(enc_out, dec_out, &dec_key);
cout << "AES encryption"
<< "Encrypted: " << enc_out << endl
<< "Decrypted: " << dec_out << endl;
return 0;
}
我正在编译:
g++ Crypto.cc -L/usr/lib -lssl -lcrypto -o crypto
程序会加密"The quick brown fox jumped over the lazy dog"就好了。但是解密时输出"The quick brown"和then随机字符。知道我做错了什么吗?
AES_decrypt
只是解密了一个 16 字节的 AES 数据块。我相信它是一个比你想要的更低级别的功能。
最好改用 EVP_*
关卡函数。您可以在 openssl wiki 上找到一个非常完整的示例,说明如何使用它们 - 它甚至使用 AES 加密:https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption
我正在尝试获得一个简单的 AES encrypt/decrypt 并将 c++ 用于我的计算机科学 class。它几乎完美地工作,但解密只对字符数组的前 16 个字符有效。
这是我的代码:
#include <iostream>
#include "openssl/aes.h"
using namespace std;
int main() {
unsigned char teext[] = "The quick brown fox jumped over the lazy dog";
/*created keys for en- and de-cryption*/
unsigned char key[] = "abcdefghijklmnop";
unsigned char iv[] = "abcdefghijklmnop";
/*char array for encryption and decryption output*/
unsigned char enc_out[80];
unsigned char dec_out[80];
/*creating key variables*/
AES_KEY enc_key, dec_key;
/*encryption process*/
AES_set_encrypt_key(key, 128, &enc_key);
AES_encrypt(teext, enc_out, &enc_key);
/*decryption process*/
AES_set_decrypt_key(iv, 128, &dec_key);
AES_decrypt(enc_out, dec_out, &dec_key);
cout << "AES encryption"
<< "Encrypted: " << enc_out << endl
<< "Decrypted: " << dec_out << endl;
return 0;
}
我正在编译:
g++ Crypto.cc -L/usr/lib -lssl -lcrypto -o crypto
程序会加密"The quick brown fox jumped over the lazy dog"就好了。但是解密时输出"The quick brown"和then随机字符。知道我做错了什么吗?
AES_decrypt
只是解密了一个 16 字节的 AES 数据块。我相信它是一个比你想要的更低级别的功能。
最好改用 EVP_*
关卡函数。您可以在 openssl wiki 上找到一个非常完整的示例,说明如何使用它们 - 它甚至使用 AES 加密:https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption