1

这是场景。我有一个具有自动更新功能的 winforms 应用程序。此应用程序包含一种计算当前(本地)exe 文件的 md5 校验和并将其与(服务器)exe 文件的 md5 校验和进行比较的方法,通过比较 2 的哈希来确定服务器上是否有任何新更新本地机器和服务器上的文件。

现在,此方法在我拥有的某些 PC 上完美运行,并且当我运行应用程序时,它会提供相同的校验和哈希值。问题出在其他一些 PC 上,我总是收到自动更新消息,因为我得到了不同的 MD5 哈希值,现在应用程序开始自动更新并在我的服务器上重新下载文件,我得到一个新的 exe 文件具有完全不同的哈希值。我真的很困惑是什么可能导致这种情况?是C#下载方法的问题吗?它本身的md5功能有问题吗?任何输入将不胜感激...

编辑:一种计算 md5 校验和的方法

public static string GetMD5HashFromFile(string filename)
{
    using (var md5 = new MD5CryptoServiceProvider())
    {
        var buffer = md5.ComputeHash(File.ReadAllBytes(filename));
        var sb = new StringBuilder();
        for (int i = 0; i < buffer.Length; i++)
        {
            sb.Append(buffer[i].ToString("x2"));
        }
        return sb.ToString();
    }
}
4

0 回答 0