MD5 哈希在 C# 和 PHP 中不匹配

发布于 2024-11-04 13:23:10 字数 528 浏览 0 评论 0原文

我尝试过使用 MD5 在 PHP 中对字符串进行哈希处理,在 C# 中也进行了相同的操作,但结果不同..有人可以解释一下如何获得匹配吗?

我的 C# 代码看起来像

md5 = new MD5CryptoServiceProvider();
            originalBytes = ASCIIEncoding.Default.GetBytes(AuthCode);
            encodedBytes = md5.ComputeHash(originalBytes);

            Guid r = new Guid(encodedBytes);
            string hashString = r.ToString("N");

提前感谢

编辑:我的字符串是 123 作为字符串

输出;

PHP:202cb962ac59075b964b07152d234b70

C#:62b92c2059ac5b07964b07152d234b70

I have tried hashing a string in PHP using MD5 and the same in C#, but the results are different.. can someone explain me how to get this matched?

my C# code looks like

md5 = new MD5CryptoServiceProvider();
            originalBytes = ASCIIEncoding.Default.GetBytes(AuthCode);
            encodedBytes = md5.ComputeHash(originalBytes);

            Guid r = new Guid(encodedBytes);
            string hashString = r.ToString("N");

Thanks in advance

Edited: My string is 123 as a string

Outputs;

PHP: 202cb962ac59075b964b07152d234b70

C# : 62b92c2059ac5b07964b07152d234b70

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

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

发布评论

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

评论(2

清君侧 2024-11-11 13:23:10

你的问题在这里:

Guid r = new Guid(encodedBytes);
string hashString = r.ToString("N");

我不确定为什么你要将编码字节加载到 Guid 中,但这不是将字节转换回字符串的正确方法。使用 BitConverter 代替:

string testString = "123";
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString);
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
// hashString == 202cb962ac59075b964b07152d234b70

Your problem is here:

Guid r = new Guid(encodedBytes);
string hashString = r.ToString("N");

I'm not sure why you're loading your encoded bytes into a Guid, but that is not the correct way to convert bytes back to a string. Use BitConverter instead:

string testString = "123";
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString);
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
// hashString == 202cb962ac59075b964b07152d234b70
云巢 2024-11-11 13:23:10

Juliet 的解决方案没有给我提供与我比较的 PHP 哈希(由 Magento 1.x 生成)相同的结果,但是基于 github 上的此实现

                using (var md5 = MD5.Create())
                {
                    result = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(input)))
                        .Replace("-", string.Empty).ToLower();
                }

The solution from Juliet didn't give me the same result as a PHP hash I was comparing against (produced by Magento 1.x), however the following did, based on this implementation on github:

                using (var md5 = MD5.Create())
                {
                    result = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(input)))
                        .Replace("-", string.Empty).ToLower();
                }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文