![]() |
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
(PHP ActiveX) 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.
<?php // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. $crypt = new COM("Chilkat.Crypt2"); $crypt->CryptAlgorithm = 'aes'; $crypt->CipherMode = 'cbc'; $crypt->KeyLength = 128; $crypt->SetEncodedKey('000102030405060708090A0B0C0D0E0F','hex'); $crypt->SetEncodedIV('000102030405060708090A0B0C0D0E0F','hex'); $crypt->EncodingMode = 'hex'; $txt1 = 'The quick brown fox jumped over the lazy dog.\r\n'; $txt2 = '-\r\n'; $txt3 = 'Done.\r\n'; $sbEncrypted = new COM("Chilkat.StringBuilder"); // 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->FirstChunk = 1; $crypt->LastChunk = 0; $sbEncrypted->Append($crypt->encryptStringENC($txt1)); // Encrypt the 2nd chunk $crypt->FirstChunk = 0; $crypt->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->FirstChunk = 0; $crypt->LastChunk = 0; for ($i = 0; $i <= 4; $i++) { $sbEncrypted->Append($crypt->encryptStringENC($txt1)); $sbEncrypted->Append($crypt->encryptStringENC($txt2)); } // Now encrypt the last chunk: $crypt->FirstChunk = 0; $crypt->LastChunk = 1; $sbEncrypted->Append($crypt->encryptStringENC($txt3)); print $sbEncrypted->getAsString() . "\n"; // Now decrypt in one call. // (The data we're decrypting is both the first AND last chunk.) $crypt->FirstChunk = 1; $crypt->LastChunk = 1; $decryptedText = $crypt->decryptStringENC($sbEncrypted->getAsString()); print $decryptedText . "\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.