|  | 
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
| (Perl) Encrypting a Data StreamThis example illustrates encrypting a large dataset using symmetric encryption algorithms like  
You can provide data chunks smaller than the encryption algorithm's block size. For example, AES uses 16-byte blocks;  
Chilkat handles the buffering of data as needed. If a data chunk smaller than the block size is provided, an empty string (or 0 bytes) is returned, and the data is buffered to be combined with subsequent chunks. The final chunk is padded to the algorithm's block size (as determined by the  Chunk-wise decryption follows the same procedure as chunk-wise encryption. 
 use chilkat(); # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $crypt = chilkat::CkCrypt2->new(); $crypt->put_CryptAlgorithm("aes"); $crypt->put_CipherMode("cbc"); $crypt->put_KeyLength(128); $crypt->SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex"); $crypt->SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex"); $crypt->put_EncodingMode("hex"); $txt1 = "The quick brown fox jumped over the lazy dog.\r\n"; $txt2 = "-\r\n"; $txt3 = "Done.\r\n"; $sbEncrypted = chilkat::CkStringBuilder->new(); # 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(1); $crypt->put_LastChunk(0); $sbEncrypted->Append($crypt->encryptStringENC($txt1)); # Encrypt the 2nd chunk $crypt->put_FirstChunk(0); $crypt->put_LastChunk(0); $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(0); $crypt->put_LastChunk(0); for ($i = 0; $i <= 4; $i++) { $sbEncrypted->Append($crypt->encryptStringENC($txt1)); $sbEncrypted->Append($crypt->encryptStringENC($txt2)); } # Now encrypt the last chunk: $crypt->put_FirstChunk(0); $crypt->put_LastChunk(1); $sbEncrypted->Append($crypt->encryptStringENC($txt3)); print $sbEncrypted->getAsString() . "\r\n"; # Now decrypt in one call. # (The data we're decrypting is both the first AND last chunk.) $crypt->put_FirstChunk(1); $crypt->put_LastChunk(1); $decryptedText = $crypt->decryptStringENC($sbEncrypted->getAsString()); print $decryptedText . "\r\n"; # 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.