![]() |
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
(Unicode C++) Streaming Encryption by Encrypting in ChunksEncrypt data in chunks.
#include <CkCrypt2W.h> #include <CkStringBuilderW.h> void ChilkatSample(void) { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkCrypt2W crypt; crypt.put_CryptAlgorithm(L"aes"); crypt.put_CipherMode(L"cbc"); crypt.put_KeyLength(128); crypt.SetEncodedKey(L"000102030405060708090A0B0C0D0E0F",L"hex"); crypt.SetEncodedIV(L"000102030405060708090A0B0C0D0E0F",L"hex"); crypt.put_EncodingMode(L"hex"); const wchar_t *txt1 = L"The quick brown fox jumped over the lazy dog.\r\n"; const wchar_t *txt2 = L"-\r\n"; const wchar_t *txt3 = L"Done.\r\n"; CkStringBuilderW sbEncrypted; // Encrypt the 1st chunk: // (don't worry about feeding the data to the encryptor in // exact multiples of the encryption algorithm's block size. // Chilkat will buffer the data.) crypt.put_FirstChunk(true); crypt.put_LastChunk(false); sbEncrypted.Append(crypt.encryptStringENC(txt1)); // Encrypt the 2nd chunk crypt.put_FirstChunk(false); crypt.put_LastChunk(false); sbEncrypted.Append(crypt.encryptStringENC(txt2)); // Now encrypt N more chunks... // Remember -- we're doing this in CBC mode, so each call // to the encrypt method depends on the state from previous // calls... crypt.put_FirstChunk(false); crypt.put_LastChunk(false); int i; for (i = 0; i <= 4; i++) { sbEncrypted.Append(crypt.encryptStringENC(txt1)); sbEncrypted.Append(crypt.encryptStringENC(txt2)); } // Now encrypt the last chunk: crypt.put_FirstChunk(false); crypt.put_LastChunk(true); sbEncrypted.Append(crypt.encryptStringENC(txt3)); wprintf(L"%s\n",sbEncrypted.getAsString()); // Now decrypt in one call. // (The data we're decrypting is both the first AND last chunk.) crypt.put_FirstChunk(true); crypt.put_LastChunk(true); const wchar_t *decryptedText = crypt.decryptStringENC(sbEncrypted.getAsString()); wprintf(L"%s\n",decryptedText); // Note: You may decrypt in N chunks by setting the FirstChunk // and LastChunk properties prior to calling the Decrypt* methods } |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.