不可能超过3GB的哈希文件

时间:2014-04-09 17:00:03

标签: c# hash md5

我正在尝试获取200个文件的哈希值,所有这些文件的大小都不同(从100字节到10GB)。

我面临的主要问题是,md5不适用于文件,大小超过3GB,只给我OutOfMemoryException

所以我想要做的是,哈希一个文件,而不是哈希另一个文件,比另一个文件(如果private bool GenerateHash(String Path)忙碌,比等待,如果不是继续),我也希望能够大小超过4GB的哈希文件(我的系统规格是4930k和32GB Ram)。

我已经通过终端在Linux上完成了它,得到了所有的哈希值,但无法在Windows上做同样的事情。

目前将我的所有东西从服务器移到家用PC,并且不想下载相同的文件或更大的文件(检查哈希和大小)

有什么建议吗?

更新:这是哈希文件的代码(编译为x32并运行x64 Box)

public void HashFile(String FPath)
    {
        using (var md5 = MD5.Create())
        {
            using (var stream = File.OpenRead(FPath))
            {
                String ComputedHash = BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", String.Empty).ToLower();

                WriteToFile(FPath + "  " + ComputedHash);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该使用TransformFinalBlockTransformBlock这样您就不会将整个内容读入内存。

来源:herehere(很好的例子here too