string sb = textBox2.Text;
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(sb);
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(sb);
sb = System.Convert.ToBase64String(plainTextBytes);
在PHP中我通过使用md5命令获得该值,
echo md5("megusia94");
两种情况下的输入都是一样的, 然而PHP中的输出是:d1e44ad921daadaf8defadcd21c8644a 而在C#中,输出为:bWVndXMpYTk0
我做错了什么?我搜索了这个论坛并尝试过: MD5 hashing does not match in C# and PHP c# md5 and php md5 not match
答案 0 :(得分:2)
你不是在比较同样的两件事。 您要比较的是ASCII编码输入字符串的base64表示与来自PHP的实际MD5哈希(以HEX表示形式)。
相反看看:
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes("megusia94");
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
Console.WriteLine(hashedString);
它正确生成哈希d1e44ad921daadaf8defadcd21c8644a
,这与您从PHP获得的哈希值相同。
答案 1 :(得分:-1)
PHP md5:
您的C#代码: