![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Encrypting a Data StreamThis example illustrates encrypting a large dataset using symmetric encryption algorithms like
You can provide data chunks smaller than the encryption algorithm's block size. For example, AES uses 16-byte blocks;
Chilkat handles the buffering of data as needed. If a data chunk smaller than the block size is provided, an empty string (or 0 bytes) is returned, and the data is buffered to be combined with subsequent chunks. The final chunk is padded to the algorithm's block size (as determined by the Chunk-wise decryption follows the same procedure as chunk-wise encryption.
LOCAL loCrypt LOCAL lcTxt1 LOCAL lcTxt2 LOCAL lcTxt3 LOCAL loSbEncrypted LOCAL i LOCAL lcDecryptedText * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. loCrypt = CreateObject('Chilkat.Crypt2') loCrypt.CryptAlgorithm = "aes" loCrypt.CipherMode = "cbc" loCrypt.KeyLength = 128 loCrypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex") loCrypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex") loCrypt.EncodingMode = "hex" lcTxt1 = "The quick brown fox jumped over the lazy dog." + CHR(13) + CHR(10) lcTxt2 = "-" + CHR(13) + CHR(10) lcTxt3 = "Done." + CHR(13) + CHR(10) loSbEncrypted = CreateObject('Chilkat.StringBuilder') * Encrypt the 1st chunk: * (don't worry about feeding the data to the encryptor in * exact multiples of the encryption algorithm's block size. * Chilkat will buffer the data.) loCrypt.FirstChunk = 1 loCrypt.LastChunk = 0 loSbEncrypted.Append(loCrypt.EncryptStringENC(lcTxt1)) * Encrypt the 2nd chunk loCrypt.FirstChunk = 0 loCrypt.LastChunk = 0 loSbEncrypted.Append(loCrypt.EncryptStringENC(lcTxt2)) * Now encrypt N more chunks... * Remember -- we're doing this in CBC mode, so each call * to the encrypt method depends on the state from previous * calls... loCrypt.FirstChunk = 0 loCrypt.LastChunk = 0 FOR i = 0 TO 4 loSbEncrypted.Append(loCrypt.EncryptStringENC(lcTxt1)) loSbEncrypted.Append(loCrypt.EncryptStringENC(lcTxt2)) NEXT * Now encrypt the last chunk: loCrypt.FirstChunk = 0 loCrypt.LastChunk = 1 loSbEncrypted.Append(loCrypt.EncryptStringENC(lcTxt3)) ? loSbEncrypted.GetAsString() * Now decrypt in one call. * (The data we're decrypting is both the first AND last chunk.) loCrypt.FirstChunk = 1 loCrypt.LastChunk = 1 lcDecryptedText = loCrypt.DecryptStringENC(loSbEncrypted.GetAsString()) ? lcDecryptedText * Note: You may decrypt in N chunks by setting the FirstChunk * and LastChunk properties prior to calling the Decrypt* methods RELEASE loCrypt RELEASE loSbEncrypted |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.