Can you explain how that can be possible? According to me "source" will be initialized once it is inside the try block.
On Aug 28, 5:47 am, Parch <[EMAIL PROTECTED]> wrote: > Another comment on the code, just for C++ style/safety: > > source = new FileSource(inputFileName, false); > > might throw an exception. At which point the value of source would > still be undefined, and it would be dangerout to call > > delete source; > > in the catch exception block. > > On Aug 28, 12:12 am, "Jeffrey Walton" <[EMAIL PROTECTED]> wrote: > > > Hi Rash, > > > There's lots of sample code out there. Have you looked at any of it? > > Seehttp://www.cryptopp.com/fom-serve/cache/1.htmlandhttp://www.cryptopp..... > > > > 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. -~----------~----~----~----~------~----~------~--~---
