When using AES CBC key (CryptoPP release V.5.5.2) to decode the SAME
ciphertext twice, we got garbage result on the second try. In the following
very simple example, the first 16 bytes would be decoded into garbage when
the same cipher text was decoded for the second time.
============ start example ==============
{
// Key and IV setup
byte key[CryptoPP::AES::DEFAULT_KEYLENGTH ],
iv[CryptoPP::AES::BLOCKSIZE ];
memset(key, 0x01, CryptoPP::AES::DEFAULT_KEYLENGTH);
memset(iv, 0x01, CryptoPP::AES::BLOCKSIZE);
// Plain text
std::string PlainText = "-First 16 bytes- Hello World";
// Cipher Text Sink
std::string CipherText;
// Encryption
CryptoPP::CBC_Mode<CryptoPP::AES>::Encryption
Encryptor(key, sizeof(key), iv);
CryptoPP::StringSource(PlainText, true,
new CryptoPP::StreamTransformationFilter(Encryptor,
new CryptoPP::StringSink(CipherText)
)
);
// Copy the cipher text
std::string CipherText2 = CipherText;
// Recovered Text Sinks
std::string RecoveredText;
std::string RecoveredText2;
// Decryption
CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption
Decryptor( key, sizeof(key), iv );
// First decoding
CryptoPP::StringSource(CipherText, true,
new CryptoPP::StreamTransformationFilter(Decryptor,
new CryptoPP::StringSink(RecoveredText)
)
);
// Second decoding
CryptoPP::StringSource(CipherText, true,
new CryptoPP::StreamTransformationFilter(Decryptor,
new CryptoPP::StringSink(RecoveredText2)
)
);
std::cout << "First Recovered Text:" << std::endl;
std::cout << " '" << RecoveredText << "'" << std::endl;
std::cout << std::endl;
std::cout << "Second (garbage) Recovered Text:" << std::endl;
std::cout << " '" << RecoveredText2 << "'" << std::endl;
std::cout << std::endl;
}
--
View this message in context: http://www.nabble.com/CryptoPP-Bug-%28-%29%3A-cannot-decode-the-SAME-ciphertext-twice-tp15912506p15912506.html
Sent from the Crypto++ Users mailing list archive at Nabble.com.
After the first decryption, the decrpytor object is in a certain state
(which is not the initial state). Call Resyncronize( iv ) and then
decrpyt again.
Jeff
On 3/8/08, LoneRoamer <loner...@yahoo.com> wrote:
>
>
> Forgive us if the following behavior isn't a bug and is expected (we only
> started using cryptopp).
>
> When using AES CBC key (CryptoPP release V.5.5.2) to decode the SAME
> ciphertext twice, we got garbage result on the second try. In the following
> very simple example, the first 16 bytes would be decoded into garbage when
> the same cipher text was decoded for the second time.
>
[SNIP]