计算大文件的Md5哈希值

时间:2015-09-22 02:49:12

标签: c# file memory hash md5

我想让它变得非常清晰和简单。如果我有1GB RAM并且我试图计算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))'

那你的建议是什么?

1 个答案:

答案 0 :(得分:5)

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

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