質問
用していただきたいと思いの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_varbintohexsubstring
と 1
最初の引数として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う最高でした。