PowerBuilder
PowerBuilder
Streaming Encryption by Encrypting in Chunks
See more Encryption Examples
Encrypt data in chunks.Chilkat PowerBuilder Downloads
integer li_rc
oleobject loo_Crypt
string ls_Txt1
string ls_Txt2
string ls_Txt3
oleobject loo_SbEncrypted
integer i
string ls_DecryptedText
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
if li_rc < 0 then
destroy loo_Crypt
MessageBox("Error","Connecting to COM object failed")
return
end if
loo_Crypt.CryptAlgorithm = "aes"
loo_Crypt.CipherMode = "cbc"
loo_Crypt.KeyLength = 128
loo_Crypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex")
loo_Crypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
loo_Crypt.EncodingMode = "hex"
ls_Txt1 = "The quick brown fox jumped over the lazy dog.~r~n"
ls_Txt2 = "-~r~n"
ls_Txt3 = "Done.~r~n"
loo_SbEncrypted = create oleobject
li_rc = loo_SbEncrypted.ConnectToNewObject("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.)
loo_Crypt.FirstChunk = 1
loo_Crypt.LastChunk = 0
loo_SbEncrypted.Append(loo_Crypt.EncryptStringENC(ls_Txt1))
// Encrypt the 2nd chunk
loo_Crypt.FirstChunk = 0
loo_Crypt.LastChunk = 0
loo_SbEncrypted.Append(loo_Crypt.EncryptStringENC(ls_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...
loo_Crypt.FirstChunk = 0
loo_Crypt.LastChunk = 0
for i = 0 to 4
loo_SbEncrypted.Append(loo_Crypt.EncryptStringENC(ls_Txt1))
loo_SbEncrypted.Append(loo_Crypt.EncryptStringENC(ls_Txt2))
next
// Now encrypt the last chunk:
loo_Crypt.FirstChunk = 0
loo_Crypt.LastChunk = 1
loo_SbEncrypted.Append(loo_Crypt.EncryptStringENC(ls_Txt3))
Write-Debug loo_SbEncrypted.GetAsString()
// Now decrypt in one call.
// (The data we're decrypting is both the first AND last chunk.)
loo_Crypt.FirstChunk = 1
loo_Crypt.LastChunk = 1
ls_DecryptedText = loo_Crypt.DecryptStringENC(loo_SbEncrypted.GetAsString())
Write-Debug ls_DecryptedText
// Note: You may decrypt in N chunks by setting the FirstChunk
// and LastChunk properties prior to calling the Decrypt* methods
destroy loo_Crypt
destroy loo_SbEncrypted