Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PowerShell) Streaming Compression --> Streaming EncryptionDemonstrate how to feed a compression stream into an encryption stream. This example does the following: Data File --> Compress --> Encrypt --> Application Reads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # This requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # Initialize the compression object. $compress = New-Object Chilkat.Compression $compress.Algorithm = "deflate" # Initialize the encryption object. $crypt = New-Object Chilkat.Crypt2 $crypt.CryptAlgorithm = "chacha20" $crypt.KeyLength = 256 $crypt.EncodingMode = "hex" $ivHex = "000000000000000000000002" $crypt.SetEncodedIV($ivHex,"hex") $crypt.InitialCount = 42 $keyHex = "1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0" $crypt.SetEncodedKey($keyHex,"hex") # Setup the streams. # streamC is for compression $streamC = New-Object Chilkat.Stream # streamE is for encryption $streamE = New-Object Chilkat.Stream # The source for the compressor is a file. $streamC.SourceFile = "qa_data/hamlet.xml" # The source for the encryptor is the output of the compressor stream. $success = $streamE.SetSourceStream($streamC) # Our application will be reading the output of streamE. # Start the compression and encryption streams in background threads.. $taskC = $compress.CompressStreamAsync($streamC) $taskE = $crypt.EncryptStreamAsync($streamE) $success = $taskC.Run() $success = $taskE.Run() # Read the compressed and encrypted bytes. $outData = New-Object Chilkat.BinData while (($streamE.EndOfStream -ne $true)) { if ($streamE.DataAvailable -eq $true) { $success = $streamE.ReadBd($outData) } } # Let's make sure the background task finished. # It should already be the case that the task is finished. while ((($taskE.Finished -ne $true) -or ($taskC.Finished -ne $true))) { $taskE.SleepMs(20) } # Get any remaining data that needs to be flushed. if ($streamE.DataAvailable -eq $true) { $success = $streamE.ReadBd($outData) } # Double-check for success.. if ($taskE.TaskSuccess -ne $true) { $("async encryption failed:") $($taskE.ResultErrorText) $success = $false } # Double-check for success.. if ($taskC.TaskSuccess -ne $true) { $("async compression failed:") $($taskC.ResultErrorText) $success = $false } # Save the compressed/encrypted data to a file. $outData.WriteFile("qa_output/compressedEncrypted.dat") $("The async compress/encrypt was successful.") # Let's decrypt and decompress to further verify... $success = $crypt.DecryptBd($outData) $success = $compress.DecompressBd($outData) # outData should contain the original data.. $success = $outData.WriteFile("qa_output/original_hamlet.xml") |
© 2000-2023 Chilkat Software, Inc. All Rights Reserved.