Perl
Perl
Streaming Encryption by Encrypting in Chunks
See more Encryption Examples
Encrypt data in chunks.Chilkat Perl Downloads
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