为什么 HashBytes 和 MD5CryptoServiceProvider().ComputeHash 不匹配?

发布于 2024-11-27 14:54:30 字数 452 浏览 1 评论 0原文

有人可以向我解释为什么 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==

Can someone explain to me why don't T-SQL's

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

and .NET's

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

return the same result?

Tsql returns 68e109f0f40ca72a15e05cc22786f8e6 and .net returns aOEJ8PQMpyoV4FzCJ4b45g==

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一个人的旅程 2024-12-04 14:54:30

.net 是base64,T-SQL 是十六进制。它们是不同的编码。

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

The .net one is base64, the T-SQL one is hex. They are different encodings.

The length of the output tells you that too because MD5 delivers 16 bytes (as per the T-SQL solution)

睫毛溺水了 2024-12-04 14:54:30

因为您要求 T-SQL 返回十六进制编码的字节,而您告诉 .NET 返回 Base64 编码的字节...这是非常不同的编码并且永远不匹配...

Because you are asking T-SQL to return the bytes HEX encoded while you tell .NET to return them Base64-encoded... that are very different encoding and do never match...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文