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

我已经尝试使用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

你的问题在这里:

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
http://stackoverflow.com/questions/5821677/md5-hashing-does-not-match-in-c-sharp-and-php

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:MD5哈希在C#和PHP中不匹配