136
4

7 に答える 7

156

私は他の場所で解決策を見つけました:

SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)
于 2008-08-05T14:26:41.870 に答える
99
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)
于 2011-01-03T14:26:45.417 に答える
32

master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0)の代わりに使用しmaster.dbo.fn_varbintohexstrてからsubstringing、結果を使用します。

実際には内部的にfn_varbintohexstr呼び出します。fn_varbintohexsubstringの最初の引数は、プレフィックスとしてfn_varbintohexsubstring追加するかどうかを指示します。internalyを最初の引数として呼び出します。0xFfn_varbintohexstrfn_varbintohexsubstring1

は必要ありませんので、直接お0xF電話ください。fn_varbintohexsubstring

于 2011-03-17T16:00:17.757 に答える
29

David Knightの言うこととは反対に、MS SQL 2008 ではこれらの 2 つの選択肢は同じ応答を返します。

SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'Hello World'),2)
SELECT UPPER(master.dbo.fn_varbintohexsubstring(0, HashBytes('MD5', 'Hello World'), 1, 0))

したがって、バージョン 2008 以降では、最初のほうが適しているようです。

于 2014-08-28T05:35:59.387 に答える
16
convert(varchar(34), HASHBYTES('MD5','Hello World'),1)

(16 進数を文字列に変換する場合は 1)

これを下位に変換し、部分文字列によって文字列の先頭から 0x を削除します。

substring(lower(convert(varchar(34), HASHBYTES('MD5','Hello World'),1)),3,32)

バイトを文字列に変換した後に C# で得られるものとまったく同じ

于 2011-09-07T07:43:45.407 に答える
1

SP変数をハッシュしたストアドプロシージャ内で次のコードを使用した個人的な経験から、文書化されていませんが、この組み合わせは私の例に従って100%機能することを確認できます。

@var=SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA2_512', @SPvar)), 3, 128)
于 2015-02-24T22:54:19.203 に答える
-3

データ型を varbinary に変更すると、私にとっては最適なようです。

于 2010-02-17T21:31:15.543 に答える