我正在使用AES加密文本,该文本在二进制文件中使用Java加密。这是我在c ++中使用CryptoPP AES解密的输入 我能够用代码解密文本。但是我在解密文本的开头有一些垃圾字符。 我尝试删除二进制文件中的前16个字节的数据,假设这将是IV。但那是数据,而不是二进制文本中的IV。
这是我使用的代码。
int main(int argc, char* argv[])
{
try
{
string recovered;
// Generate Cipher, Key, and CBC
byte key[ AES::DEFAULT_KEYLENGTH ], iv[ AES::BLOCKSIZE ];
string sss = "9F28872C88AC24D0D1333DAAC6600A77";
StringSource ss1((const byte*)sss.c_str(), sss.length(), true,
new HexDecoder(new CryptoPP::ArraySink(key, AES::DEFAULT_KEYLENGTH)));
memset( iv, 0x00, AES::BLOCKSIZE );
string encoded;
CBC_Mode< AES >::Decryption d;
d.SetKeyWithIV(key, sizeof(key),iv);
CryptoPP::FileSource file_source("DecodedBase64-1.bin", true,new CryptoPP::StreamTransformationFilter(d,new CryptoPP::StringSink(recovered)));
cout << "recovered text: " << recovered << endl;
}
catch(const CryptoPP::Exception& e)
{
cerr << e.what() << endl;
exit(1);
}
/*********************************\
\*********************************/
return 0;
}