.net 为什么不';t HashBytes和MD5CryptoServiceProvider()。是否计算哈希匹配?

.net 为什么不';t HashBytes和MD5CryptoServiceProvider()。是否计算哈希匹配?,.net,tsql,hash,md5,.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("Hel

有人能给我解释一下为什么不使用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==
.net返回值是base64,T-SQL返回值是十六进制。它们是不同的编码


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

因为您要求T-SQL返回十六进制编码的字节,同时告诉.NET返回Base64编码的字节。。。这是非常不同的编码,从来都不匹配…

(.NET是Base64,SQL不是),顺便说一下,Vnuk,您明确地说“
Convert.ToBase64String
”,所以这不应该那么令人惊讶吗?