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) Stream a file to compression to encryption to an output file.Runs a chain of streams to read a source file, compress, encrypt, and write an output file.
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) # The sink for the encryptor is the output file. $streamE.SinkFile = "qa_output/compressed_encrypted.dat" # Start the compression and encryption streams in background threads.. $taskC = $compress.CompressStreamAsync($streamC) $taskE = $crypt.EncryptStreamAsync($streamE) $success = $taskC.Run() $success = $taskE.Run() # Let the streams run until finished. # 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) } # check for success.. if ($taskE.TaskSuccess -ne $true) { $("async encryption failed:") $($taskE.ResultErrorText) $success = $false } # check for success.. if ($taskC.TaskSuccess -ne $true) { $("async compression failed:") $($taskC.ResultErrorText) $success = $false } # Load the file that was produced and decrypt/decompress to verify. $binData = New-Object Chilkat.BinData $success = $binData.LoadFile("qa_output/compressed_encrypted.dat") $success = $crypt.DecryptBd($binData) $success = $compress.DecompressBd($binData) # binData should contain the original data.. $success = $binData.WriteFile("qa_output/original_hamlet.xml") $("Finished.") |
© 2000-2023 Chilkat Software, Inc. All Rights Reserved.