PowerShell
PowerShell
Compress and Encrypt a Large File (Low and Constant Memory Footprint)
See more Compression Examples
Demonstrates how to compress and encrypt a large file such that the memory footprint remains low and constant.Note: This example requires Chilkat v9.5.0.99 or greater.
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.
$compress = New-Object Chilkat.Compression
$compress.Algorithm = "deflate"
# Set encryption params.
# The possible values are the same as for the corresponding properties in the Chilkat Crypt2 class/object.
# The encoded IV and Key must be specified as hex.
$json = New-Object Chilkat.JsonObject
$json.UpdateString("cryptAlgorithm","aes")
$json.UpdateString("cipherMode","cbc")
$json.UpdateInt("keyLength",128)
$json.UpdateInt("paddingScheme",0)
$json.UpdateString("encodedIV","000102030405060708090A0B0C0D0E0F")
$json.UpdateString("encodedKey","000102030405060708090A0B0C0D0E0F")
# Do file-to-file compression+encryption in a single call.
$inPath = "qa_data/largeFile.dat"
$outPath = "c:/temp/qa_output/compressed_encrypted.dat"
$success = $compress.CompressEncryptFile($json,$inPath,$outPath)
if ($success -eq $false) {
$($compress.LastErrorText)
exit
}
# We can do file-to-file decrypt/decompress like this:
$inPath2 = $outPath
$outPath2 = "c:/temp/qa_output/restored.dat"
$success = $compress.DecryptDecompressFile($json,$inPath2,$outPath2)
if ($success -eq $false) {
$($compress.LastErrorText)
exit
}
# Note: The above decrypt + decompress is the equivalent of doing the same in these two steps:
$crypt = New-Object Chilkat.Crypt2
$crypt.CryptAlgorithm = "aes"
$crypt.CipherMode = "cbc"
$crypt.KeyLength = 128
$crypt.PaddingScheme = 0
$crypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
$crypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex")
$decryptedPath = "c:/temp/qa_output/decrypted.dat"
$success = $crypt.CkDecryptFile($inPath2,$decryptedPath)
if ($success -eq $false) {
$($crypt.LastErrorText)
exit
}
$outPath3 = "c:/temp/qa_output/restored_in_two_steps.dat"
$success = $compress.DecompressFile($decryptedPath,$outPath3)
if ($success -eq $false) {
$($compress.LastErrorText)
exit
}
$("Success.")