Sample code for 30+ languages & platforms
SQL Server

Hash Binary Data (SHA256 and other hash algorithms)

Demonstrates how to hash binary bytes using SHA256, SHA384, SHA512, MD2, MD5, HAVAL, RIPEMD, etc.

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
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

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

    -- Let's load a binary file to get the bytes..
    DECLARE @jpgData int
    EXEC @hr = sp_OACreate 'Chilkat.BinData', @jpgData OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @jpgData, 'LoadFile', @success OUT, 'qa_data/jpg/starfish.jpg'
    IF @success <> 1
      BEGIN

        PRINT 'Failed to load file.'
        EXEC @hr = sp_OADestroy @jpgData
        RETURN
      END

    EXEC sp_OAMethod @jpgData, 'GetBinary', @jpgBytes OUT

    DECLARE @crypt int
    EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT

    -- Choose the hash algorithm.
    -- Can be  "sha1", "sha256", "sha384", "sha512", "md2", "md5", "haval", "ripemd128", "ripemd160","ripemd256", or "ripemd320".
    EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'sha256'

    EXEC sp_OAMethod @crypt, 'HashBytes', @hashBytes OUT, @jpgBytes

    -- Let's examine the hash as a hex string.
    DECLARE @sb int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT

    EXEC sp_OAMethod @sb, 'AppendEncoded', @success OUT, @hashBytes, 'hex'

    EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
    PRINT 'SHA256 hash = ' + @sTmp0

    -- We could alternatively hash the bytes and receive the hex result directly:
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex'
    DECLARE @hashHexStr nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'HashBytesENC', @hashHexStr OUT, @jpgBytes

    PRINT 'SHA256 hash = ' + @hashHexStr

    EXEC @hr = sp_OADestroy @jpgData
    EXEC @hr = sp_OADestroy @crypt
    EXEC @hr = sp_OADestroy @sb


END
GO