Hello guys. I have some code of cryptoPP using AES algorithm. And it's work 
with some small .txt file but when i decrypt some big file (suck as .doc 
file) it doesn't work. But i don't understand how does it work. Please 
comment in each line in my project. Sorry because my English is not good. 
Thank you! And here is my code:



void encryptFile(const char* password, const char* inputFileName, 
                 const char* outputFileName) 
{ 
  byte pass[AES::BLOCKSIZE];
  byte iv[16];               
  
  AutoSeededRandomPool rng;   

 
  StringSource(password, true, 
               new HashFilter(*(new SHA256), new ArraySink(pass, 
AES::BLOCKSIZE))); 
 
  rng.GenerateBlock(iv, 16);   
  

  AES::Encryption aesEncryption(pass, CryptoPP::AES::DEFAULT_KEYLENGTH);   
   
  CBC_Mode_ExternalCipher::Encryption cbcEncryption(aesEncryption, iv);     
    
  
  StreamTransformationFilter *encryptor;                                   
    
  encryptor = new StreamTransformationFilter(cbcEncryption, 
                                             new FileSink(outputFileName) 
); 

  encryptor->Put(iv, 16);                                                   
  
  
  FileSource(inputFileName, true, encryptor);                               
 
} 


void decryptFile(const char* password, const char*inputFileName, 
                 const char* outputFileName) 
{ 
  byte pass[AES::BLOCKSIZE]; 
  byte iv[16];

  try { 
    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);   
    
    StreamTransformationFilter *decryptor;                                 
            
    decryptor = new 
      StreamTransformationFilter(cbcDecryption, new 
FileSink(outputFileName)); 

   
    char garbage[16], iv_garbage[16];
    ifstream inf; 
    inf.open(inputFileName); inf.read(iv_garbage, 16);
     
    cbcDecryption.ProcessData((byte *)garbage, (const byte *)iv_garbage, 
16); 

    FileSource(inf, true, decryptor); 

    inf.close();
  } 
  catch(CryptoPP::Exception &e) 
    { 
      cerr << "Caught exception during decryption!" << endl; 
      return; 
    } 
} 

-- 
-- 
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/groups/opt_out.

Reply via email to