c# - MD5文件处理

标签 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;           
    }

如有任何建议,我们将不胜感激。

问候

最佳答案

参见 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);

关于c# - MD5文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345851/

相关文章:

c++ - 轻量级8字节散列函数算法

c# - 短字节转换

c# - 用MVC和Web API注册路由的方式之间有什么区别?

java - 安卓 : How to create HMAC MD5 string?

c# - C#和golang的MD5不一致

java - 查找给定字符串的 UTF-8 编码的字节的 MD5 哈希值

download - 下载应用程序时使用 MD5 哈希的目的是什么?

c# - 具有空合并的琐碎算术如何表现

c# - 使用 Ninject 启动 MVP WinForms 应用程序

ruby-on-rails - 哈希覆盖哈希