1

大家早上好,

我正在使用 C# 开发 MD5 文件完整性检查工具。

文件需要多长时间才能获得 MD5 校验和值?例如,如果我尝试获取 2gb .mpg 文件,则每次大约需要 5 分钟以上。这似乎太长了。

我只是不耐烦吗?

下面是我正在运行的代码

public string getHash(String @fileLocation)
    {
        FileStream fs = new FileStream(@fileLocation, FileMode.Open);

        HashAlgorithm alg = new HMACMD5();
        byte[] hashValue = alg.ComputeHash(fs);

        string md5Result = "";

        foreach (byte x in hashValue)
        {
            md5Result += x;
        }           

        fs.Close();           

        return md5Result;           
    }

任何建议将不胜感激。

问候

4

1 回答 1

7

有关如何以最有效的方式计算文件哈希值的信息,请参阅this 。你基本上必须包装FileStream成一个BufferedStream而不是把它输入HMACMD5.ComputeHash(Stream)过载:

HashAlgorithm hmacMd5 = new HMACMD5();
byte[] hash;

using(Stream fileStream = new FileStream(fileLocation, FileMode.Open))
    using(Stream bufferedStream = new BufferedStream(fileStream, 1200000))
        hash = hmacMd5.ComputeHash(bufferedStream);
于 2009-08-28T09:15:59.467 回答