Sample code for 30+ languages & platforms
AutoIt

Streaming Encryption by Encrypting in Chunks

See more Encryption Examples

Encrypt data in chunks.

Chilkat AutoIt Downloads

AutoIt
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

$oCrypt = ObjCreate("Chilkat.Crypt2")

$oCrypt.CryptAlgorithm = "aes"
$oCrypt.CipherMode = "cbc"
$oCrypt.KeyLength = 128

$oCrypt.SetEncodedKey "000102030405060708090A0B0C0D0E0F","hex"
$oCrypt.SetEncodedIV "000102030405060708090A0B0C0D0E0F","hex"

$oCrypt.EncodingMode = "hex"
Local $sTxt1 = "The quick brown fox jumped over the lazy dog." & @CRLF
Local $sTxt2 = "-" & @CRLF
Local $sTxt3 = "Done." & @CRLF

$oSbEncrypted = ObjCreate("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.)
$oCrypt.FirstChunk = True
$oCrypt.LastChunk = False
$oSbEncrypted.Append($oCrypt.EncryptStringENC($sTxt1))

; Encrypt the 2nd chunk
$oCrypt.FirstChunk = False
$oCrypt.LastChunk = False
$oSbEncrypted.Append($oCrypt.EncryptStringENC($sTxt2))

; 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...
$oCrypt.FirstChunk = False
$oCrypt.LastChunk = False
Local $i
For $i = 0 To 4
    $oSbEncrypted.Append($oCrypt.EncryptStringENC($sTxt1))
    $oSbEncrypted.Append($oCrypt.EncryptStringENC($sTxt2))
Next

; Now encrypt the last chunk:
$oCrypt.FirstChunk = False
$oCrypt.LastChunk = True
$oSbEncrypted.Append($oCrypt.EncryptStringENC($sTxt3))

ConsoleWrite($oSbEncrypted.GetAsString() & @CRLF)

; Now decrypt in one call.
; (The data we're decrypting is both the first AND last chunk.)  
$oCrypt.FirstChunk = True
$oCrypt.LastChunk = True
Local $sDecryptedText = $oCrypt.DecryptStringENC($oSbEncrypted.GetAsString())

ConsoleWrite($sDecryptedText & @CRLF)

; Note: You may decrypt in N chunks by setting the FirstChunk
; and LastChunk properties prior to calling the Decrypt* methods