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
(C) 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.
#include <C_CkCompression.h> #include <C_CkJsonObject.h> #include <C_CkCrypt2.h> void ChilkatSample(void) { HCkCompression compress; BOOL success; HCkJsonObject json; const char *inPath; const char *outPath; const char *inPath2; const char *outPath2; HCkCrypt2 crypt; const char *decryptedPath; const char *outPath3; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. compress = CkCompression_Create(); CkCompression_putAlgorithm(compress,"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. json = CkJsonObject_Create(); CkJsonObject_UpdateString(json,"cryptAlgorithm","aes"); CkJsonObject_UpdateString(json,"cipherMode","cbc"); CkJsonObject_UpdateInt(json,"keyLength",128); CkJsonObject_UpdateInt(json,"paddingScheme",0); CkJsonObject_UpdateString(json,"encodedIV","000102030405060708090A0B0C0D0E0F"); CkJsonObject_UpdateString(json,"encodedKey","000102030405060708090A0B0C0D0E0F"); // Do file-to-file compression+encryption in a single call. inPath = "qa_data/largeFile.dat"; outPath = "c:/temp/qa_output/compressed_encrypted.dat"; success = CkCompression_CompressEncryptFile(compress,json,inPath,outPath); if (success == FALSE) { printf("%s\n",CkCompression_lastErrorText(compress)); CkCompression_Dispose(compress); CkJsonObject_Dispose(json); return; } // We can do file-to-file decrypt/decompress like this: inPath2 = outPath; outPath2 = "c:/temp/qa_output/restored.dat"; success = CkCompression_DecryptDecompressFile(compress,json,inPath2,outPath2); if (success == FALSE) { printf("%s\n",CkCompression_lastErrorText(compress)); CkCompression_Dispose(compress); CkJsonObject_Dispose(json); return; } // Note: The above decrypt + decompress is the equivalent of doing the same in these two steps: crypt = CkCrypt2_Create(); CkCrypt2_putCryptAlgorithm(crypt,"aes"); CkCrypt2_putCipherMode(crypt,"cbc"); CkCrypt2_putKeyLength(crypt,128); CkCrypt2_putPaddingScheme(crypt,0); CkCrypt2_SetEncodedIV(crypt,"000102030405060708090A0B0C0D0E0F","hex"); CkCrypt2_SetEncodedKey(crypt,"000102030405060708090A0B0C0D0E0F","hex"); decryptedPath = "c:/temp/qa_output/decrypted.dat"; success = CkCrypt2_CkDecryptFile(crypt,inPath2,decryptedPath); if (success == FALSE) { printf("%s\n",CkCrypt2_lastErrorText(crypt)); CkCompression_Dispose(compress); CkJsonObject_Dispose(json); CkCrypt2_Dispose(crypt); return; } outPath3 = "c:/temp/qa_output/restored_in_two_steps.dat"; success = CkCompression_DecompressFile(compress,decryptedPath,outPath3); if (success == FALSE) { printf("%s\n",CkCompression_lastErrorText(compress)); CkCompression_Dispose(compress); CkJsonObject_Dispose(json); CkCrypt2_Dispose(crypt); return; } printf("Success.\n"); CkCompression_Dispose(compress); CkJsonObject_Dispose(json); CkCrypt2_Dispose(crypt); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.