我正在尝试使用 AES 加密字节数组。我已经能够毫无问题地加密字符串和文件,但是字节数组似乎不适合我。我传入一个要加密的字节数组,为了便于测试,我只传入由 crypto++ (bArrayToEncrypt) 生成的 AES 密钥。加密似乎有效,但解密却完全有效。我也觉得奇怪,加密有大量重复字符。我在这里做错了什么?
我看到一个类似的问题Here,但它与 RSA 有关
以及提供的示例加密我已经运行的字符串。
函数的调用方式:
size_t ksize = CryptoPP::AES::MAX_KEYLENGTH;
size_t vsize = CryptoPP::AES::BLOCKSIZE;
byte key[ksize];
byte testArray[ksize];
byte encryptedksize];
byte decrypted[ksize];
byte iv[vsize];
//generate key & iv, then generate a random byte array to encrypt/decrypt
CryptoPP::AutoSeededRandomPool prng;
prng.GenerateBlock(key, ksize);
prng.GenerateBlock(iv, vsize);
prng.GenerateBlock(testArray, ksize);
encrypt_barray(key, ksize, iv, vsize, testArray, ksize, encrypted);
//printed results here
decrypt_barray(key, ksize, iv, vsize, encrypted, ksize, decrypted);
//printed results here
加密数组
void encrypt_barray(byte* key,
size_t kSize,
byte* iv,
size_t ivSize,
byte* bArrayToEncrypt,
size_t bArraySize,
byte* encrypted) {
CryptoPP::CBC_Mode<CryptoPP::AES>::Encryption e;
e.SetKeyWithIV(key, kSize, iv, ivSize);
CryptoPP::ArraySource(key, true,
new CryptoPP::StreamTransformationFilter(e, new CryptoPP::ArraySink(encrypted, bArraySize)));
}
解密_bararray
void decrypt_barray(byte* key,
size_t kSize,
byte* iv,
size_t ivSize,
byte* bArrayToDecrypt,
size_t bArraySize,
byte* decrypted) {
CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption d;
d.SetKeyWithIV(keyFromHash, kfhSize, iv1, iv1Size);
CryptoPP::ArraySource(keyToDecrypt, true,
new CryptoPP::StreamTransformationFilter(d, new CryptoPP::ArraySink(decrypted, bArraySize)));
}
Output:
Encrypted: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠E1A2AFC5D820ADF7
7DB656DEF3245570╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╨Ñ♫
Decrypted: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠E
1A2AFC5D820ADF77DB656DEF3245570╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╨Ñ♫
Press any key to continue . . .