![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Decrypt File in Chunks using 256-bit AESSee more Encryption ExamplesShows how to decrypt a file chunk-by-chunk using FirstChunk/LastChunk properties and accumulate the results in memory with a Chilkat BinData object.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoCrypt String sFileToDecrypt Handle hoFacIn Integer iChunkSize Integer iNumChunks Variant vBd Handle hoBd Handle hoBdDecrypted Integer i Move False To iSuccess // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // This example decrypts the file previously encrypted in this example: // Encrypt File in Chunks using AES CBC Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End Set ComCryptAlgorithm Of hoCrypt To "aes" Set ComCipherMode Of hoCrypt To "cbc" Set ComKeyLength Of hoCrypt To 256 Send ComSetEncodedKey To hoCrypt "000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F" "hex" Send ComSetEncodedIV To hoCrypt "000102030405060708090A0B0C0D0E0F" "hex" Move "c:/temp/qa_output/hamlet.enc" To sFileToDecrypt Get Create (RefClass(cComCkFileAccess)) To hoFacIn If (Not(IsComObjectCreated(hoFacIn))) Begin Send CreateComObject of hoFacIn End Get ComOpenForRead Of hoFacIn sFileToDecrypt To iSuccess If (iSuccess <> True) Begin Showln "Failed to open file to be decrytped." Procedure_Return End // Let's decrypt in 32000 byte chunks. Move 32000 To iChunkSize Get ComGetNumBlocks Of hoFacIn iChunkSize To iNumChunks Set ComFirstChunk Of hoCrypt To True Set ComLastChunk Of hoCrypt To False Get Create (RefClass(cComChilkatBinData)) To hoBd If (Not(IsComObjectCreated(hoBd))) Begin Send CreateComObject of hoBd End Get Create (RefClass(cComChilkatBinData)) To hoBdDecrypted If (Not(IsComObjectCreated(hoBdDecrypted))) Begin Send CreateComObject of hoBdDecrypted End Move 0 To i While (i < iNumChunks) Move (i + 1) To i If (i = iNumChunks) Begin Set ComLastChunk Of hoCrypt To True End // Read the next chunk from the file. // The last chunk will be whatever amount remains in the file.. Get ComClear Of hoBd To iSuccess Get pvComObject of hoBd to vBd Get ComFileReadBd Of hoFacIn iChunkSize vBd To iSuccess // Decrypt this chunk. Get pvComObject of hoBd to vBd Get ComDecryptBd Of hoCrypt vBd To iSuccess // Accumulate the decrypted chunks. Get pvComObject of hoBd to vBd Get ComAppendBd Of hoBdDecrypted vBd To iSuccess Set ComFirstChunk Of hoCrypt To False Loop // Make sure both FirstChunk and LastChunk are restored to True after // encrypting or decrypting in chunks. Otherwise subsequent encryptions/decryptions // will produce unexpected results. Set ComFirstChunk Of hoCrypt To True Set ComLastChunk Of hoCrypt To True Send ComFileClose To hoFacIn // The fully decrypted file is contained in bdDecrypted. // You can save to a file if desired, or use the decrypted data in your application directly from bdDecrypted. Get ComWriteFile Of hoBdDecrypted "c:/temp/qa_output/hamlet_decrypted.xml" To iSuccess End_Procedure |
||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.