![]() |
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
(PureBasic) Streaming Encryption by Encrypting in ChunksEncrypt data in chunks.
IncludeFile "CkCrypt2.pb" IncludeFile "CkStringBuilder.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkCryptAlgorithm(crypt, "aes") CkCrypt2::setCkCipherMode(crypt, "cbc") CkCrypt2::setCkKeyLength(crypt, 128) CkCrypt2::ckSetEncodedKey(crypt,"000102030405060708090A0B0C0D0E0F","hex") CkCrypt2::ckSetEncodedIV(crypt,"000102030405060708090A0B0C0D0E0F","hex") CkCrypt2::setCkEncodingMode(crypt, "hex") txt1.s = "The quick brown fox jumped over the lazy dog." + Chr(13) + Chr(10) txt2.s = "-" + Chr(13) + Chr(10) txt3.s = "Done." + Chr(13) + Chr(10) sbEncrypted.i = CkStringBuilder::ckCreate() If sbEncrypted.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; 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.) CkCrypt2::setCkFirstChunk(crypt, 1) CkCrypt2::setCkLastChunk(crypt, 0) CkStringBuilder::ckAppend(sbEncrypted,CkCrypt2::ckEncryptStringENC(crypt,txt1)) ; Encrypt the 2nd chunk CkCrypt2::setCkFirstChunk(crypt, 0) CkCrypt2::setCkLastChunk(crypt, 0) CkStringBuilder::ckAppend(sbEncrypted,CkCrypt2::ckEncryptStringENC(crypt,txt2)) ; 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... CkCrypt2::setCkFirstChunk(crypt, 0) CkCrypt2::setCkLastChunk(crypt, 0) i.i For i = 0 To 4 CkStringBuilder::ckAppend(sbEncrypted,CkCrypt2::ckEncryptStringENC(crypt,txt1)) CkStringBuilder::ckAppend(sbEncrypted,CkCrypt2::ckEncryptStringENC(crypt,txt2)) Next ; Now encrypt the last chunk: CkCrypt2::setCkFirstChunk(crypt, 0) CkCrypt2::setCkLastChunk(crypt, 1) CkStringBuilder::ckAppend(sbEncrypted,CkCrypt2::ckEncryptStringENC(crypt,txt3)) Debug CkStringBuilder::ckGetAsString(sbEncrypted) ; Now decrypt in one call. ; (The data we're decrypting is both the first AND last chunk.) CkCrypt2::setCkFirstChunk(crypt, 1) CkCrypt2::setCkLastChunk(crypt, 1) decryptedText.s = CkCrypt2::ckDecryptStringENC(crypt,CkStringBuilder::ckGetAsString(sbEncrypted)) Debug decryptedText ; Note: You may decrypt in N chunks by setting the FirstChunk ; and LastChunk properties prior to calling the Decrypt* methods CkCrypt2::ckDispose(crypt) CkStringBuilder::ckDispose(sbEncrypted) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.