Sample code for 30+ languages & platforms
PureBasic

PBES2 Password-Based Encryption

See more Encryption Examples

Demonstrates PBES2 encryption

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkCrypt2.pb"

Procedure ChilkatExample()

    ; This example assumes 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

    ; Set properties for PBES2 encryption:

    ; When the encryption algorithm is set to "pbes2",
    ; Chilkat will automatically derive the actual secret key using PBKDF2 and
    ; the specified paramters: password, salt, iteration count, hash function, and desired key length.

    CkCrypt2::setCkCryptAlgorithm(crypt, "pbes2")
    CkCrypt2::setCkPbesPassword(crypt, "mySecretPassword")

    ; Set the underlying PBE algorithm (and key length):
    CkCrypt2::setCkPbesAlgorithm(crypt, "aes")
    CkCrypt2::setCkKeyLength(crypt, 256)

    CkCrypt2::ckSetEncodedIV(crypt,"000102030405060708090A0B0C0D0E0F","hex")

    ; Give it some salt:
    CkCrypt2::ckSetEncodedSalt(crypt,"0102030405060708","hex")

    ; A higher iteration count makes the algorithm more
    ; computationally expensive and therefore exhaustive
    ; searches (for breaking the encryption) is more difficult:
    CkCrypt2::setCkIterationCount(crypt, 1024)

    ; A hash algorithm needs to be set for PBES2:
    CkCrypt2::setCkHashAlgorithm(crypt, "sha256")

    ; Indicate that the encrypted bytes should be returned
    ; as a hex string:
    CkCrypt2::setCkEncodingMode(crypt, "hex")

    plainText.s = "To be encrypted."

    encryptedText.s = CkCrypt2::ckEncryptStringENC(crypt,plainText)

    Debug encryptedText

    ; Now decrypt:
    decryptedText.s = CkCrypt2::ckDecryptStringENC(crypt,encryptedText)

    Debug decryptedText


    CkCrypt2::ckDispose(crypt)


    ProcedureReturn
EndProcedure