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) Compress and Encrypt a Large File (Low and Constant Memory Footprint)See more Compression ExamplesDemonstrates how to compress and encrypt a large file such that the memory footprint remains low and constant. Note: This example requires Chilkat v9.5.0.99 or greater.
Use ChilkatAx-9.5.0-win32.pkg Procedure Test Handle hoCompress Boolean iSuccess Variant vJson Handle hoJson String sInPath String sOutPath String sInPath2 String sOutPath2 Handle hoCrypt String sDecryptedPath String sOutPath3 String sTemp1 // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatCompression)) To hoCompress If (Not(IsComObjectCreated(hoCompress))) Begin Send CreateComObject of hoCompress End Set ComAlgorithm Of hoCompress To "deflate" // Set encryption params. // The possible values are the same as for the corresponding properties in the Chilkat Crypt2 class/object. // The encoded IV and Key must be specified as hex. Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComUpdateString Of hoJson "cryptAlgorithm" "aes" To iSuccess Get ComUpdateString Of hoJson "cipherMode" "cbc" To iSuccess Get ComUpdateInt Of hoJson "keyLength" 128 To iSuccess Get ComUpdateInt Of hoJson "paddingScheme" 0 To iSuccess Get ComUpdateString Of hoJson "encodedIV" "000102030405060708090A0B0C0D0E0F" To iSuccess Get ComUpdateString Of hoJson "encodedKey" "000102030405060708090A0B0C0D0E0F" To iSuccess // Do file-to-file compression+encryption in a single call. Move "qa_data/largeFile.dat" To sInPath Move "c:/temp/qa_output/compressed_encrypted.dat" To sOutPath Get pvComObject of hoJson to vJson Get ComCompressEncryptFile Of hoCompress vJson sInPath sOutPath To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End // We can do file-to-file decrypt/decompress like this: Move sOutPath To sInPath2 Move "c:/temp/qa_output/restored.dat" To sOutPath2 Get pvComObject of hoJson to vJson Get ComDecryptDecompressFile Of hoCompress vJson sInPath2 sOutPath2 To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End // Note: The above decrypt + decompress is the equivalent of doing the same in these two steps: 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 Set ComPaddingScheme Of hoCrypt To 0 Send ComSetEncodedIV To hoCrypt "000102030405060708090A0B0C0D0E0F" "hex" Send ComSetEncodedKey To hoCrypt "000102030405060708090A0B0C0D0E0F" "hex" Move "c:/temp/qa_output/decrypted.dat" To sDecryptedPath Get ComCkDecryptFile Of hoCrypt sInPath2 sDecryptedPath To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End Move "c:/temp/qa_output/restored_in_two_steps.dat" To sOutPath3 Get ComDecompressFile Of hoCompress sDecryptedPath sOutPath3 To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End Showln "Success." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.