質問

用していただきたいと思いのMD5ハッシュ文字列の値がSQL Server2005年.これは、以下のコマンド:

SELECT HashBytes('MD5', 'HelloWorld')

しかし、これを返しまVarBinaryの代わりにVarChar値です。場合をするための変換 0x68E109F0F40CA72A15E05CC22786F8E6 入VarCharを取得しま há ðô§*à\Â'†øæ の代わりに 68E109F0F40CA72A15E05CC22786F8E6.

はありまSQLに基づく解決するのか

あり

役に立ちましたか?

解決

い解決方法を発見したら他の場所:

SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)

他のヒント

SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)

使用 master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0) の代わりに master.dbo.fn_varbintohexstr その substringing の結果です。

実際 fn_varbintohexstr 電話 fn_varbintohexsubstring 内蔵しています。最初の引数の fn_varbintohexsubstring れまでに追加 0xF としての接頭辞です。 fn_varbintohexstr 電話 fn_varbintohexsubstring1 最初の引数としてinternaly.

でん 0xF, 話 fn_varbintohexsubstring ます。

異な デビッド-ナイト 言うように、これら二つの選択肢を返し同様の対応MS SQL2008年

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

ように見えるのは良い選択肢から版2008年

convert(varchar(34), HASHBYTES('MD5','Hello World'),1)

(1変換する十六進文字列)

これを変換しよび削除0x開始からの文字列の部分文字列:

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

うのと同じことなのかをC#に変換しましたが、バイト文字列

個人の使用経験は、次のコード内に保存されている方のハッシュされ、SP変数が確認できるが、非正規滞在、この組み合わせの作品を100%としての私の例:

@var=SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA2_512', @SPvar)), 3, 128)

変化のデータ型をvarbinaryう最高でした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top