Sample code for 30+ languages & platforms
PowerBuilder

Streaming Encryption by Encrypting in Chunks

See more Encryption Examples

Encrypt data in chunks.

Chilkat PowerBuilder Downloads

PowerBuilder
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