【问题标题】:Calculating Md5 Hash of Big Files计算大文件的 Md5 哈希
【发布时间】:2015-12-18 21:12:27
【问题描述】:

我想让它非常清晰和简单。如果我有 1gb 内存并且我正在尝试计算 2gb 文件的 md5 哈希值怎么办?目前,我正在这样做:

private static string Md5Hash(byte[] input)
{
    byte[] hash = MD5.Create().ComputeHash(input);
    StringBuilder builder = new StringBuilder(32);
    foreach(byte b in hash)
    { builder.Append(b.ToString("X2")); }
    return builder.ToString();
}

// I'm using it like: 'Md5.AsString(File.ReadAllBytes(filePath))'

那么你有什么建议呢?

【问题讨论】:

    标签: c# file memory hash md5


    【解决方案1】:

    不要在将文件完全加载到内存后计算文件的哈希值,而是使用采用Stream 的重载。

    byte[] hash;
    using (Stream input = File.OpenRead("Filename"))
    {
        hash = MD5.Create().ComputeHash(input);
    }
    

    【讨论】:

    • 所以,它不会炸毁整个内存吧?使用缓冲区流进行实时哈希计算?这似乎很清楚:)
    • @PilawyerDev 这就是他在这里使用File.OpenRead 而不是File.ReadAllBytes 的原因。
    猜你喜欢
    • 2016-12-30
    • 2012-04-14
    • 1970-01-01
    • 2021-06-19
    • 2012-05-06
    • 1970-01-01
    • 2011-12-08
    • 2017-09-23
    • 2010-10-20
    相关资源
    最近更新 更多