我在使用C#和PHP检查文件的MD5校验和时遇到了小问题。通过PHP脚本计算出的哈希值与C#计算出的哈希值不同。
libcurl.dll C# = c3506360ce8f42f10dc844e3ff6ed999
libcurl.dll PHP = f02b47e41e9fa77909031bdef07532af
在 PHP 中我使用 md5_file
函数,我的 C# 代码如下:
protected string GetFileMD5(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
有什么想法可以计算相同的哈希值吗?我认为这可能与编码有关。
提前感谢!
Windows-1250
编码,而你的 PHP 脚本使用UTF-8
或ISO-8859-1
编码... 尝试在两侧使用相同的编码方式... - shadyyxmd5sum
相比如何? - Ja͢ckmd5sum
返回d41d8cd98f00b204e9800998ecf8427e
,但有点奇怪,因为它与 md5("") 相同。 - Kacperbyte[]
相同,因此PHP无需解码。 - Esailija