函数每次都返回不同的MD5哈希值

时间:2013-04-08 11:35:42

标签: c# md5

我编写了一个函数,它将文件的URL作为参数,并返回该文件的MD5哈希值。

此函数生成的哈希(在开发环境中)与第三方工具为同一文件生成的哈希相匹配。

但是当我在客户端的QA环境中部署它时,每次调用该函数时,此函数都会返回不同的值。

我做了一些Google-ing,发现问题可能是因为开发。服务器是64位,QA服务器是32位。由于我无法访问客户端的服务器,因此我将其部署在另一台32位服务器中,发现即使在32位服务器中哈希也匹配(函数按预期工作?)。

我也看了this question

这是我写的函数:

public static String GetMD5HashFromFile(String url)
{
    String response = String.Empty;
    HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(url);
    using (HttpWebResponse aResponse = (HttpWebResponse)aRequest.GetResponse())
    {
        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] retVal = md5.ComputeHash(aResponse.GetResponseStream());
        response = "MD5:" + BitConverter.ToString(retVal).Replace("-", string.Empty);
    }
    return response;
}

我的问题是;这个函数返回各种值的原因是什么?这是我职能中的问题吗?

1 个答案:

答案 0 :(得分:1)

尝试添加日志记录。所以首先将文件下载到字符串(在磁盘上的某处写入,以便稍后进行比较)。然后计算磁盘上的哈希值。 我在我的一个项目中遇到了这样的问题,在那种情况下问题出在代理服务器上,它增加了一些响应。但是没有磁盘上的文件就无法比较它们。