For CFB, OFB, and CTR modes, you need to pass the *encryption* block cipher object to the ExternalCipher mode object, even for decryption with that mode.
On Fri, Oct 29, 2004 at 05:33:07PM +0530, Vishal Rao wrote: > Hi, > > I am trying something like the following code first for encrypting > some data then decrypting it back in the 4 modes CBC, ECB, OFB and CFB > (with AES). > > CBC mode with IV works fine but CFB and OFB modes decrypt into junk > and ECB throws an exception (but my app disables exceptions)... > > pCipher = new CBC_Mode_ExternalCipher::Encryption(*pAES, pIV); > or > pCipher = new CFB_Mode_ExternalCipher::Encryption(*pAES, pIV); > or > pCipher = new ECB_Mode_ExternalCipher::Encryption(*pAES, pIV); > or > pCipher = new OFB_Mode_ExternalCipher::Encryption(*pAES, pIV); > > (or the above similarly for decryption) > > (pAES is object ptr of 'AESEncryption' or 'AESDecryption' and pIV is a > Win32 BYTE array, unsigned char) > > then > > pFilter = new StreamTransformationFilter(*pCipher); > pFilter->Put(in_data, in_len); > pFilter->MessageEnd(); > > pResult = pFilter->Get(out_data, out_len); > > What needs to be done differently for ECB, OFB and CFB? CBC is working > fine for me... > > I am using MS VC++ 6 SP6 with CryptoPP 5.0.4 (with FIPS DLL as well as > the non-FIPS lib) > > Thanks, > Vishal > > -- > "Thou shalt not follow the null pointer for at its end madness and chaos lie."
