2011-08-02 13 views
2

は、誰かが私に説明できない理由T-SQLのなぜHashBytesとMD5CryptoServiceProvider()。ComputeHashが一致しないのですか?

SELECT substring(master.dbo.fn_varbintohexstr(hashbytes('MD5', 'HelloWorld')), 3, 32) 

と.NETの

Convert.ToBase64String(New System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("HelloWorld"))) 

リターン同じ結果をやりますか?

TSQLが68e109f0f40ca72a15e05cc22786f8e6を返し、.NET aOEJ8PQMpyoV4FzCJ4b45g==

答えて

3

.NETのいずれかを返すは、T-SQL一つはヘクスで、BASE64です。それらは異なるエンコーディングです。

は、出力の長さは、あなたがに.NETを伝えながら、エンコードされたバイトのHEXを返すために、T-SQLを求めているのでMD5は

+0

(.NETはBase64、SQLはありません) –

+2

そしてVnukの方法では、あなたは明示的に「Convert」と言っています。 ToBase64String' 'これは驚くべきことではないでしょうか? –

+1

馬鹿。ありがとう:) – Vnuk

0

(T-SQLソリューションごとに)16バイトを実現しすぎているためことを示していますそれらを返すBase64エンコードされた...非常に異なるエンコーディングであり、決して一致しない...

関連する問題