Frage : TSQL HMAC Funktion

Ich versuche, eine HMAC Funktion in SQL entsprechend dieser Spezifikation zu verursachen: http://tools.ietf.org/html /rfc2104

Wikipedia hat auch eine sehr gute Erklärung: http://en.wikipedia.org/wi ki/HMAC

anders als das die Spur geht Kälte! Ich bin sicher, dass ich nicht die erste Person sein kann, zum dieses in SQL zu versuchen und zu tun???

Below ist, insoweit ich habe, ich sind verloren total hinsichtlich, wo ich falsch gehe, aber es definitiv funktioniert nicht. Wenn jedermann etwas Licht verschütten könnte, würde ich es wirklich; schätzen)

--------------------------------------------------------------------------------------------
THE FUNKTION UNTER DEN GEGEBENEN UMSTÄNDEN BIS JETZT
--------------------------------------------------------------------------------------------

ALTER FUNKTION [dbo].
(
@KEY VARCHAR (MAX),
@MESSAGE VARCHAR (MAX)
)
RETURNS VARCHAR (MAX)



AS
BEGIN
      --Schlüssel HACKEN wenn länger als 16 characters
WENN (LEN (@key) >16)
GESETZTES @key = HASHBYTES („md5“, @key)


      --Schlüssel mit '0 auffüllen, wenn kürzer, das 16 characters
WÄHREND LEN (@key) <16
BEGIN
GESETZTES @key = @key + '0 '
END

      --ipad vorbereiten u. ERKLÄREN opod
@ipad VARCHAR (max), @opad VARCHAR (max)

ERKLÄREN GESETZTES @ipad = „6666666666666666 '
GESETZTES @opad =“ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ '

@i_key_pad VARCHAR (max), @o_key_pad VARCHAR (max), @position INT
GESETZTES @position = 1
GESETZTES @i_key_pad = ''
GESETZTES @o_key_pad = ''

      --ipad u. opod mit key
verstärken, WÄHREND @position <= 16
BEGIN
GESETZTES @i_key_pad = @i_key_pad + PUTZFRAU (ASCII (TEILKETTE (@ipad, @position, 1)) ^ ASCII (TEILKETTE (@key, @position, 1)))
GESETZTES @O_KEY_PAD = @O_KEY_PAD + PUTZFRAU (ASCII (TEILKETTE (@OPAD, @POSITION, 1)) ^ ASCII (TEILKETTE (@KEY, @POSITION, 1)))
GESETZTES @position = @position + 1
END


RETURN HASHBYTES („md5“, (@o_key_pad + BEKEHRTER (VARCHAR (maximal), HASHBYTES ('md5'< wbr/>, (@i_key_pad + @message)))))

END


Antwort : TSQL HMAC Funktion

Gebrochen es!!! :)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
FUNKTION [dbo] ÄNDERN. [HMAC]
(
		@KEY VARCHAR (MAX),
		@MESSAGE VARCHAR (MAX)
)
RÜCKKEHR VARCHAR (MAX)

WIE
ANFANGEN
	--Schlüssel HACKEN wenn länger als 16 Buchstaben
	WENN (LEN (@KEY) >64)
		@key = HASHBYTES („md5“, @key) EINSTELLEN


	@I_KEY_PAD VARCHAR (MAX), @O_KEY_PAD VARCHAR (MAX), @POSITION INT ERKLÄREN
		@position EINSTELLEN = 1
		@i_key_pad EINSTELLEN = ''
		@o_key_pad EINSTELLEN = ''

	--ipad u. opod mit Schlüssel verstärken
	WÄHREND @position  <>
           
Weitere Lösungen  
 
programming4us programming4us