Sample code for 30+ languages & platforms
SQL Server

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 SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @crypt int
    EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @sHexBinary nvarchar(4000)
    SELECT @sHexBinary = '9D4203A3FF07791A1CD7FB0075D179E14E8B9DBEBFDE24F6D04613B8397B328E'

    -- The input is hex-encoded binary data, so set the Charset property = "hex"
    -- The Charset can also be "base64".
    EXEC sp_OASetProperty @crypt, 'Charset', 'hex'
    -- The output will be encoded to hex also.
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex'

    EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'ripemd160'
    DECLARE @hash nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'HashStringENC', @hash OUT, @sHexBinary

    PRINT 'RIPEMD160: ' + @hash

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

    -- The same can be accomplished w/ encryption:	
    EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'aes'
    EXEC sp_OASetProperty @crypt, 'CipherMode', 'cbc'
    EXEC sp_OASetProperty @crypt, 'KeyLength', 256
    EXEC sp_OASetProperty @crypt, 'PaddingScheme', 0

    EXEC sp_OASetProperty @crypt, 'Charset', 'hex'
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex'

    DECLARE @ivHex nvarchar(4000)
    SELECT @ivHex = '000102030405060708090A0B0C0D0E0F'
    EXEC sp_OAMethod @crypt, 'SetEncodedIV', NULL, @ivHex, 'hex'

    DECLARE @keyHex nvarchar(4000)
    SELECT @keyHex = '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F'
    EXEC sp_OAMethod @crypt, 'SetEncodedKey', NULL, @keyHex, 'hex'

    DECLARE @encStr nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'EncryptStringENC', @encStr OUT, @sHexBinary

    PRINT @encStr

    -- Important: This example requires Chilkat v9.5.0.49 or greater to work correctly.
    DECLARE @decStr nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'DecryptStringENC', @decStr OUT, @encStr

    PRINT @decStr

    EXEC @hr = sp_OADestroy @crypt


END
GO