C#中的相同文件不同的MD5校验和

时间:2012-10-10 07:48:36

标签: c# file md5 checksum

以下是该方案。我有一个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();
    }
}

1 个答案:

答案 0 :(得分:0)

SELECT 
A.accountId, 
SUM(CASE WHEN Q.QuoteId IS NULL THEN 0 ELSE 1 END) as NumberOfQuotes,
SUM(CASE WHEN P.new_propid IS NULL THEN 0 ELSE 1 END) as NumberOfOrders
FROM Account A 
LEFT JOIN Quote Q ON A.AccountId = Q.AccountId
LEFT JOIN new_prop P ON A.AccountId = P.New_accountid
WHERE A.accountid = '58B3F89E-E1E5-E511-B1F5-4ED0FE97D338'
GROUP BY A.AccountId