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
(Xojo Plugin) Streaming EncryptionEncrypt and decrypt using a stream.
// This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Dim crypt As New Chilkat.Crypt2 // Setup encryption using the chacha20 algorithm... crypt.CryptAlgorithm = "chacha20" crypt.KeyLength = 256 crypt.EncodingMode = "hex" Dim ivHex As String ivHex = "000000000000000000000002" crypt.SetEncodedIV ivHex,"hex" crypt.InitialCount = 42 Dim keyHex As String keyHex = "1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0" crypt.SetEncodedKey keyHex,"hex" Dim plainText As String plainText = "The quick brown fox jumped over the lazy dog." + EndOfLine.Windows Dim stream As New Chilkat.Stream // We'll save the encrypted output in eStrings to demonstrate streaming decryption next. Dim eStrings As New Chilkat.StringArray // Start a background task that will encrypt a stream. Dim task As Chilkat.Task task = crypt.EncryptStreamAsync(stream) Dim success As Boolean success = task.Run() // Write plainText to the stream, and read chacha20 encrypted text.. Dim cipherText As String Dim i As Int32 For i = 1 To 10 // Note: An encryption algorithm's block size will cause buffering, // and therefore not every loop iteration will produce output. success = stream.WriteString(plainText) If (stream.DataAvailable = True) Then cipherText = stream.ReadBytesENC("hex") System.DebugLog(cipherText) success = eStrings.Append(cipherText) End If Next // Tell the background task that the stream has ended. success = stream.WriteClose() // Let's make sure the background task finished. // It should already be the case that the task is finished. While (task.Finished <> True) task.SleepMs 20 Wend // Get any remaining data available from the stream. If (stream.DataAvailable = True) Then cipherText = stream.ReadBytesENC("hex") System.DebugLog(cipherText) success = eStrings.Append(cipherText) End If If (task.TaskSuccess <> True) Then System.DebugLog("async encryption failed:") System.DebugLog(task.ResultErrorText) success = False End If System.DebugLog("-- encrypt finished --") // Now decrypt to return the original. // Reset the stream object so it can be used again. stream.Reset // Start a background task that will decrypt a stream. task = crypt.DecryptStreamAsync(stream) success = task.Run() Dim n As Int32 n = eStrings.Count For i = 0 To n - 1 success = stream.WriteBytesENC(eStrings.GetString(i),"hex") If (stream.DataAvailable = True) Then plainText = stream.ReadString() System.DebugLog(plainText) End If Next // Tell the background task that the stream has ended. success = stream.WriteClose() // Let's make sure the background task finished. // It should already be the case that the task is finished. While (task.Finished <> True) task.SleepMs 20 Wend // Get any remaining data available from the stream. If (stream.DataAvailable = True) Then plainText = stream.ReadString() System.DebugLog(plainText) End If If (task.TaskSuccess <> True) Then System.DebugLog("async decryption failed:") System.DebugLog(task.ResultErrorText) success = False End If System.DebugLog("-- decrypt finished --") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.