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
(Classic ASP) Streaming EncryptionEncrypt and decrypt using a stream.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <% ' This example assumes the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.Crypt2") set crypt = Server.CreateObject("Chilkat.Crypt2") ' Setup encryption using the chacha20 algorithm... crypt.CryptAlgorithm = "chacha20" crypt.KeyLength = 256 crypt.EncodingMode = "hex" ivHex = "000000000000000000000002" crypt.SetEncodedIV ivHex,"hex" crypt.InitialCount = 42 keyHex = "1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0" crypt.SetEncodedKey keyHex,"hex" plainText = "The quick brown fox jumped over the lazy dog." & vbCrLf ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.Stream") set stream = Server.CreateObject("Chilkat.Stream") ' We'll save the encrypted output in eStrings to demonstrate streaming decryption next. ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.StringArray") set eStrings = Server.CreateObject("Chilkat.StringArray") ' Start a background task that will encrypt a stream. ' task is a Chilkat.Task Set task = crypt.EncryptStreamAsync(stream) success = task.Run() ' Write plainText to the stream, and read chacha20 encrypted text.. 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 = 1) Then cipherText = stream.ReadBytesENC("hex") Response.Write "<pre>" & Server.HTMLEncode( cipherText) & "</pre>" 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. Do While (task.Finished <> 1) task.SleepMs 20 Loop ' Get any remaining data available from the stream. If (stream.DataAvailable = 1) Then cipherText = stream.ReadBytesENC("hex") Response.Write "<pre>" & Server.HTMLEncode( cipherText) & "</pre>" success = eStrings.Append(cipherText) End If If (task.TaskSuccess <> 1) Then Response.Write "<pre>" & Server.HTMLEncode( "async encryption failed:") & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( task.ResultErrorText) & "</pre>" success = 0 End If Response.Write "<pre>" & Server.HTMLEncode( "-- encrypt finished --") & "</pre>" ' 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 is a Chilkat.Task Set task = crypt.DecryptStreamAsync(stream) success = task.Run() n = eStrings.Count For i = 0 To n - 1 success = stream.WriteBytesENC(eStrings.GetString(i),"hex") If (stream.DataAvailable = 1) Then plainText = stream.ReadString() Response.Write "<pre>" & Server.HTMLEncode( plainText) & "</pre>" 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. Do While (task.Finished <> 1) task.SleepMs 20 Loop ' Get any remaining data available from the stream. If (stream.DataAvailable = 1) Then plainText = stream.ReadString() Response.Write "<pre>" & Server.HTMLEncode( plainText) & "</pre>" End If If (task.TaskSuccess <> 1) Then Response.Write "<pre>" & Server.HTMLEncode( "async decryption failed:") & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( task.ResultErrorText) & "</pre>" success = 0 End If Response.Write "<pre>" & Server.HTMLEncode( "-- decrypt finished --") & "</pre>" %> </body> </html> |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.