我正在使用以下代码来计算文件的 MD5SUM -
byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b));
这通常工作正常,但如果我遇到大文件 (~1GB) - 例如iso 镜像或 DVD VOB 文件 - 我遇到内存不足异常。
不过,我能够在大约 10 秒内在 cygwin 中计算同一个文件的 MD5SUM。
请建议我如何才能让它适用于我程序中的大文件。
谢谢
最佳答案
我建议使用替代方法:
MD5CryptoServiceProvider.ComputeHash(Stream)
然后传入在您的文件上打开的输入流。这种方法几乎肯定不会一次性读入内存中的整个文件。
我还要指出,在大多数 MD5 实现中,可以将 byte[]
数据一次一个 block 地添加到摘要函数中,然后在最后请求哈希。
关于c# - C#计算大文件的MD5SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805730/