On Tuesday, September 22, 2015 at 6:26:55 AM UTC-4, Jo Win wrote:
>
> Hello,
>
> I made a little decryption program for AES-CBC. The code of the program
> looks like this
>
>
> //the object 'decryptor' is defined as AES CBC Decryption with specified
> key and iv
>
> //filter for decryption and writing to file /tmp/myfile WITH PADDING
> CryptoPP::StreamTransformationFilter *filter = new CryptoPP::
> StreamTransformationFilter(decryptor,new CryptoPP::FileSink("/tmp/myfile"
> ),CryptoPP::StreamTransformationFilter::PKCS_PADDING);
>
> total = 0;
> while (...) //until file ends
> {
> buffer = ...//read from some other file (f.read(...))
> total += data.size();
> filter->Put((const byte*)buffer.data(),buffer.size()); //write to
> filter
> filter->Flush(true);
> }
>
> //finished
> filter->MessageEnd();
>
>
> I got the error Message
>
>
> terminate called after throwing an instance of
> 'CryptoPP::InvalidCiphertext'
> what(): StreamTransformationFilter: ciphertext length is not a multiple
> of block size
>
>
> I don't understand, why I got the error. the encrypted source file and the
> destination file are 1.122.928 bytes long, which is divisable by 16. The
> variable total from the code has the same value.
>
>
> As a result I got the file /tmp/myfile which is a correct decrypted file,
> but there are 4 bytes padding left and I don't know why.
>
Shooting from the hip... Omit the call(s) to filter->Flush(). Leave the
call to filter->MessageEnd().
I should have some time later today or tomorrow to write a proper test case
if you still need it.
Jeff
--
--
You received this message because you are subscribed to the "Crypto++ Users"
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at
http://www.cryptopp.com.
---
You received this message because you are subscribed to the Google Groups
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.