Sample code for 30+ languages & platforms
DataFlex

AES Encrypt String (utf-8 byte representation) and return Base64

See more Encryption Examples

Demonstrates how to AES encrypt the utf-8 byte representation of a string and return in base64 format.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoCrypt
    String sIvHex
    String sKeyHex
    String sEncryptedStr
    String sUrlEncoded
    String sEncBase64Url
    String sEncBase64
    String sOriginalStr

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End

    Set ComCryptAlgorithm Of hoCrypt To "aes"
    Set ComCipherMode Of hoCrypt To "cbc"
    Set ComKeyLength Of hoCrypt To 256
    Set ComCharset Of hoCrypt To "utf-8"
    Set ComEncodingMode Of hoCrypt To "base64"

    Move "000102030405060708090A0B0C0D0E0F" To sIvHex
    Send ComSetEncodedIV To hoCrypt sIvHex "hex"
    Move "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" To sKeyHex
    Send ComSetEncodedKey To hoCrypt sKeyHex "hex"

    Get ComEncryptStringENC Of hoCrypt "This is the original string" To sEncryptedStr
    Showln sEncryptedStr

    // Let's say we want to URL encode the base64 string..
    Set ComCryptAlgorithm Of hoCrypt To "none"
    Set ComEncodingMode Of hoCrypt To "url"
    Get ComEncryptStringENC Of hoCrypt sEncryptedStr To sUrlEncoded
    Showln sUrlEncoded

    // Sample output:

    //  q3fmgEqjqa9o//ZS6aPuh4Wtbrrxx/WOIQSKeVnesZg=
    //  q3fmgEqjqa9o%2F%2FZS6aPuh4Wtbrrxx%2FWOIQSKeVnesZg%3D

    // -------------------------------------------------------------------
    // Now let's do the reverse...
    // 

    // We start with a string that is the binary encrypted data, base64 encoded, and then URL encoded.
    Move "q3fmgEqjqa9o%2F%2FZS6aPuh4Wtbrrxx%2FWOIQSKeVnesZg%3D" To sEncBase64Url

    // We'll use the same crypt object.  If using a new instance of the crypt object,
    // make sure *all* settings are identical:  the algorithm, cipher mode, key length, charset, encoding mode, IV, and secret key.

    // Decode from URL...
    Set ComCryptAlgorithm Of hoCrypt To "none"
    Set ComEncodingMode Of hoCrypt To "url"
    Get ComDecryptStringENC Of hoCrypt sUrlEncoded To sEncBase64
    Showln sEncBase64

    // Now decrypt...
    Set ComCryptAlgorithm Of hoCrypt To "aes"
    Set ComEncodingMode Of hoCrypt To "base64"
    Get ComDecryptStringENC Of hoCrypt sEncBase64 To sOriginalStr
    Showln sOriginalStr


End_Procedure