Sample code for 30+ languages & platforms
DataFlex

Encrypting or Hashing Hex or Base64 Encoded Binary Data

This example demonstrates how to encrypt binary input data that is in an encoded string form, such as "hex" or "base64". The goal is to do the following:
  1. Decode the input to get the binary data to be hashed or encrypted.
  2. Hash or encrypt.
  3. Encode the result and return as a hex or base64 encoded string.
This can be accomplished by setting the Charset property equal to the encoding of the input string. Normally, the Charset property indicates the internal character encoding representation to be used before hashing/encrypting. When set to the names of values such as "hex" or "base64", it indicates that we don't actually have text data, but simply binary data that is to be decoded first, then hashed/encrypted, and then returned (possibly as an encoded string, as shown in this example).

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoCrypt
    String sSHexBinary
    String sHash
    String sIvHex
    String sKeyHex
    String sEncStr
    String sDecStr

    // 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

    Move "9D4203A3FF07791A1CD7FB0075D179E14E8B9DBEBFDE24F6D04613B8397B328E" To sSHexBinary

    // The input is hex-encoded binary data, so set the Charset property = "hex"
    // The Charset can also be "base64".
    Set ComCharset Of hoCrypt To "hex"
    // The output will be encoded to hex also.
    Set ComEncodingMode Of hoCrypt To "hex"

    Set ComHashAlgorithm Of hoCrypt To "ripemd160"
    Get ComHashStringENC Of hoCrypt sSHexBinary To sHash
    Showln "RIPEMD160: " sHash

    // Important: This example requires Chilkat v9.5.0.49 or greater to work correctly.

    // The same can be accomplished w/ encryption:	
    Set ComCryptAlgorithm Of hoCrypt To "aes"
    Set ComCipherMode Of hoCrypt To "cbc"
    Set ComKeyLength Of hoCrypt To 256
    Set ComPaddingScheme Of hoCrypt To 0

    Set ComCharset Of hoCrypt To "hex"
    Set ComEncodingMode Of hoCrypt To "hex"

    Move "000102030405060708090A0B0C0D0E0F" To sIvHex
    Send ComSetEncodedIV To hoCrypt sIvHex "hex"

    Move "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" To sKeyHex
    Send ComSetEncodedKey To hoCrypt sKeyHex "hex"

    Get ComEncryptStringENC Of hoCrypt sSHexBinary To sEncStr
    Showln sEncStr

    // Important: This example requires Chilkat v9.5.0.49 or greater to work correctly.
    Get ComDecryptStringENC Of hoCrypt sEncStr To sDecStr
    Showln sDecStr


End_Procedure