Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Demonstrates the MacBytes MethodDemonstrates the MacBytes method to do HMAC-SHA256, HMAC-SHA1, and HMAC-MD5.
-- 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) -- This example assumes Chilkat Crypt2 to have been previously unlocked. -- See Unlock Crypt2 for sample code. -- Demonstrates how to reproduce the following results found at -- https://en.wikipedia.org/wiki/Hash-based_message_authentication_code -- HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = 0xf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 -- HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 0x80070713463e7749b90c2dc24911e275 -- HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 DECLARE @crypt int -- Use "Chilkat_9_5_0.Crypt2" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END EXEC sp_OASetProperty @crypt, 'MacAlgorithm', 'hmac' EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex' DECLARE @success int EXEC sp_OAMethod @crypt, 'SetMacKeyString', @success OUT, 'key' DECLARE @sData nvarchar(4000) SELECT @sData = 'The quick brown fox jumps over the lazy dog' -- We're doing this in a convoluted, roundabout fashion to show syntax -- and data types for handling binary data. -- The straightforward way of doing an HMAC on a string is -- shown here: HMAC String DECLARE @binData int -- Use "Chilkat_9_5_0.BinData" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.BinData', @binData OUT EXEC sp_OAMethod @binData, 'AppendString', @success OUT, @sData, 'utf-8' EXEC sp_OAMethod @binData, 'GetBinary', @dataToHmac OUT EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'SHA-256' EXEC sp_OAMethod @crypt, 'MacBytes', @macBytes OUT, @dataToHmac EXEC sp_OAMethod @binData, 'Clear', @success OUT EXEC sp_OAMethod @binData, 'AppendBinary', @success OUT, @macBytes EXEC sp_OAMethod @binData, 'GetEncoded', @sTmp0 OUT, 'hex' PRINT 'HMAC_SHA256: ' + @sTmp0 EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'MD5' EXEC sp_OAMethod @crypt, 'MacBytes', @macBytes OUT, @dataToHmac EXEC sp_OAMethod @binData, 'Clear', @success OUT EXEC sp_OAMethod @binData, 'AppendBinary', @success OUT, @macBytes EXEC sp_OAMethod @binData, 'GetEncoded', @sTmp0 OUT, 'hex' PRINT 'HMAC_MD5: ' + @sTmp0 EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'SHA-1' EXEC sp_OAMethod @crypt, 'MacBytes', @macBytes OUT, @dataToHmac EXEC sp_OAMethod @binData, 'Clear', @success OUT EXEC sp_OAMethod @binData, 'AppendBinary', @success OUT, @macBytes EXEC sp_OAMethod @binData, 'GetEncoded', @sTmp0 OUT, 'hex' PRINT 'HMAC_SHA1: ' + @sTmp0 -- The output is the same (ignore case) -- HMAC_SHA256: F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8 -- HMAC_MD5: 80070713463E7749B90C2DC24911E275 -- HMAC_SHA1: DE7C9B85B8B78AA6BC8A7A36F70A90701C9DB4D9 EXEC @hr = sp_OADestroy @crypt EXEC @hr = sp_OADestroy @binData END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.