PHP Extension
PHP Extension
Streaming Encryption by Encrypting in Chunks
See more Encryption Examples
Encrypt data in chunks.Chilkat PHP Extension Downloads
<?php
include("chilkat.php");
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
$crypt = new CkCrypt2();
$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 = new CkStringBuilder();
// 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);
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));
print $sbEncrypted->getAsString() . "\n";
// 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);
$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
?>