PowerShell
PowerShell
Decrypt File in Chunks using 256-bit AES
See more Encryption Examples
Shows how to decrypt a file chunk-by-chunk using FirstChunk/LastChunk properties and accumulate the results in memory with a Chilkat BinData object.Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# This example decrypts the file previously encrypted in this example:
# Encrypt File in Chunks using AES CBC
$crypt = New-Object Chilkat.Crypt2
$crypt.CryptAlgorithm = "aes"
$crypt.CipherMode = "cbc"
$crypt.KeyLength = 256
$crypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F","hex")
$crypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
$fileToDecrypt = "c:/temp/qa_output/hamlet.enc"
$facIn = New-Object Chilkat.FileAccess
$success = $facIn.OpenForRead($fileToDecrypt)
if ($success -ne $true) {
$("Failed to open file to be decrytped.")
exit
}
# Let's decrypt in 32000 byte chunks.
$chunkSize = 32000
$numChunks = $facIn.GetNumBlocks($chunkSize)
$crypt.FirstChunk = $true
$crypt.LastChunk = $false
$bd = New-Object Chilkat.BinData
$bdDecrypted = New-Object Chilkat.BinData
$i = 0
while ($i -lt $numChunks) {
$i = $i + 1
if ($i -eq $numChunks) {
$crypt.LastChunk = $true
}
# Read the next chunk from the file.
# The last chunk will be whatever amount remains in the file..
$bd.Clear()
$facIn.FileReadBd($chunkSize,$bd)
# Decrypt this chunk.
$crypt.DecryptBd($bd)
# Accumulate the decrypted chunks.
$bdDecrypted.AppendBd($bd)
$crypt.FirstChunk = $false
}
# Make sure both FirstChunk and LastChunk are restored to $true after
# encrypting or decrypting in chunks. Otherwise subsequent encryptions/decryptions
# will produce unexpected results.
$crypt.FirstChunk = $true
$crypt.LastChunk = $true
$facIn.FileClose()
# The fully decrypted file is contained in bdDecrypted.
# You can save to a file if desired, or use the decrypted data in your application directly from bdDecrypted.
$bdDecrypted.WriteFile("c:/temp/qa_output/hamlet_decrypted.xml")