为什么不使用HashBytes和MD5CryptoServiceProvider()。ComputeHash匹配?

时间:2011-08-02 11:52:12

标签: .net tsql hash md5

有人可以向我解释为什么不使用T-SQL

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==

2 个答案:

答案 0 :(得分:3)

.net one是base64,T-SQL是hex。它们是不同的编码。

输出的长度也告诉你,因为MD5提供了16个字节(根据T-SQL解决方案)

答案 1 :(得分:0)

因为你要求T-SQL返回HEX编码的字节,而你告诉.NET返回它们的Base64编码...这是非常不同的编码,永远不会匹配......