MD5文件处理

时间:2009-08-28 09:08:11

标签: c# hash md5 integrity

早上好,

我正在使用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;           
    }

任何建议都将受到赞赏。

此致

1 个答案:

答案 0 :(得分: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);