Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Encrypt File in Chunks using AES CBCDemonstrates how to use the FirstChunk/LastChunk properties to encrypt a file chunk-by-chunk.
Use ChilkatAx-win32.pkg Procedure Test Handle hoCrypt String sFileToEncrypt Handle hoFacIn Boolean iSuccess String sOutputEncryptedFile Handle hoFacOutEnc Integer iChunkSize Integer iNumChunks Variant vBd Handle hoBd Integer i String sDecryptedFile Boolean iBSame // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. 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 128 Send ComSetEncodedKey To hoCrypt "000102030405060708090A0B0C0D0E0F" "hex" Send ComSetEncodedIV To hoCrypt "000102030405060708090A0B0C0D0E0F" "hex" Move "qa_data/hamlet.xml" To sFileToEncrypt Get Create (RefClass(cComCkFileAccess)) To hoFacIn If (Not(IsComObjectCreated(hoFacIn))) Begin Send CreateComObject of hoFacIn End Get ComOpenForRead Of hoFacIn sFileToEncrypt To iSuccess If (iSuccess <> True) Begin Showln "Failed to open file that is to be encrytped." Procedure_Return End Move "qa_output/hamlet.enc" To sOutputEncryptedFile Get Create (RefClass(cComCkFileAccess)) To hoFacOutEnc If (Not(IsComObjectCreated(hoFacOutEnc))) Begin Send CreateComObject of hoFacOutEnc End Get ComOpenForWrite Of hoFacOutEnc sOutputEncryptedFile To iSuccess If (iSuccess <> True) Begin Showln "Failed to encrypted output file." Procedure_Return End // Let's encrypt in 10000 byte chunks. Move 10000 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 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 // Encrypt. Get pvComObject of hoBd to vBd Get ComEncryptBd Of hoCrypt vBd To iSuccess // Write the encrypted chunk to the output file. Get pvComObject of hoBd to vBd Get ComFileWriteBd Of hoFacOutEnc vBd 0 0 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 Send ComFileClose To hoFacOutEnc // Decrypt the encrypted output file in a single call using CBC mode: Move "qa_output/hamlet_dec.xml" To sDecryptedFile Get ComCkDecryptFile Of hoCrypt sOutputEncryptedFile sDecryptedFile To iSuccess // Assume success for the example.. // Compare the contents of the decrypted file with the original file: Get ComFileContentsEqual Of hoFacIn sFileToEncrypt sDecryptedFile To iBSame Showln "bSame = " iBSame End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.