Hi Rash,
There's lots of sample code out there. Have you looked at any of it?
See http://www.cryptopp.com/fom-serve/cache/1.html and
http://www.cryptopp.com/wiki/.
> delete new FileSource(inputFileName, true, encryptor);
This is interesting to me. What is your motivation for creating this
on the Heap, rather than the Stack?
Jeff
On 8/27/07, Rash <[EMAIL PROTECTED]> wrote:
>
> Hello All,
> I encrypt a file using AES::CBC mode with a random IV. Something
> like this
>
> void encryptFile(const char* password, const char* inputFileName,
> const char* outputFileName)
> {
> byte pass[ AES::BLOCKSIZE ]; // digest of password
> byte iv[ AES::BLOCKSIZE ]; // Initial Vector (IV)
>
> AutoSeededRandomPool *rng;
> rng = new AutoSeededRandomPool; // random number generator
>
> // digest password
> delete new StringSource( password, true,
> new HashFilter(*(new SHA256), new ArraySink(pass,
> AES::BLOCKSIZE)) );
>
> // random Initial Vector
> rng->GenerateBlock(iv, AES::BLOCKSIZE);
>
> // create object for encrypting
> AES::Encryption aesEncryption(pass,
> CryptoPP::AES::DEFAULT_KEYLENGTH);
> CBC_Mode_ExternalCipher::Encryption cbcEncryption(aesEncryption,
> iv);
>
> StreamTransformationFilter *encryptor;
> encryptor = new StreamTransformationFilter(cbcEncryption, new
> FileSink(outputFileName) );
>
> // "bind" a file and encrypt one
> delete new FileSource(inputFileName, true, encryptor);
> }
>
> Now how do I get the same Initialization Vector (IV) to decrypt the
> encrypted file or how do I write the decryptFile function:
>
> void decryptFile(const char* password, const char*inputFileName,const
> char* outputFileName)
> {
> //how to get the IV that was used for encrypting the file.
> byte pass[ AES::BLOCKSIZE ];
> byte iv[ AES::BLOCKSIZE ];
>
> FileSource *source;
> try
> {
> source = new FileSource(inputFileName, false);
>
> delete new StringSource( password, true,
> new HashFilter(*(new SHA256), new
> ArraySink(pass,AES::BLOCKSIZE)) );
>
> CryptoPP::AES::Decryption aesDecryption(pass,
> CryptoPP::AES::DEFAULT_KEYLENGTH);
> CryptoPP::CBC_Mode_ExternalCipher::Decryption
> cbcDecryption( aesDecryption, iv );
>
> // "bind" decryptor to output file
> source->Attach( new StreamTransformationFilter(cbcDecryption,
> new FileSink((outputFileName) ) ));
>
> // push the rest data
> source->PumpAll();
> }
> catch(CryptoPP::Exception &e)
> {
> delete source ;
> throw;
> }
> delete source ;
> }
>
> The above decryptFile function doesnt decrypt the first block. I dont
> know why?
> Please help.
>
> Please help as this is really important to me.
> Thanks
>
--~--~---------~--~----~------------~-------~--~----~
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.
-~----------~----~----~----~------~----~------~--~---