I am trying to encrypt a byte array using AES. I have been able to encrypt strings and files no problem, however byte arrays seem to not be working for me. I pass in a byte array to be encrypted, for ease of testing I just pass in a generated AES key by crypto++ (bArrayToEncrypt). The encryption appears to be working but then the decryption does work at all. I also found it strange that the encryption has a large amount of duplicate characters. What I am doing wrong here??
I saw a similar question Here, but it was pertaining to RSA as well as the example provided encrypts strings which I already have up a running.
How functions are called:
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
Encrypt_barray
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)));
}
Decrypt_barray
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 . . .