![]() |
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
(PowerShell) 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.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll" # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $crypt = New-Object 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-Object 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 = $true $crypt.LastChunk = $false $sbEncrypted.Append($crypt.EncryptStringENC($txt1)) # Encrypt the 2nd chunk $crypt.FirstChunk = $false $crypt.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.FirstChunk = $false $crypt.LastChunk = $false for ($i = 0; $i -le 4; $i++) { $sbEncrypted.Append($crypt.EncryptStringENC($txt1)) $sbEncrypted.Append($crypt.EncryptStringENC($txt2)) } # Now encrypt the last chunk: $crypt.FirstChunk = $false $crypt.LastChunk = $true $sbEncrypted.Append($crypt.EncryptStringENC($txt3)) $($sbEncrypted.GetAsString()) # Now decrypt in one call. # (The data we're decrypting is both the first AND last chunk.) $crypt.FirstChunk = $true $crypt.LastChunk = $true $decryptedText = $crypt.DecryptStringENC($sbEncrypted.GetAsString()) $($decryptedText) # 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.