我正在使用以下代码来计算文件的MD5SUM -

byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b));

这通常正常,但如果我遇到一个大文件(~1GB) - 例如一个iso映像或一个DVD VOB文件 - 我得到一个Out of Memory异常。

尽管如此,我能够在cygwin中为大约10秒的同一文件计算MD5SUM。

请建议我如何在程序中为大文件工作。

由于

有帮助吗?

解决方案

我建议使用替代方法:

MD5CryptoServiceProvider.ComputeHash(Stream)

并传入您文件中打开的输入流。这种方法几乎可以肯定一次性读取内存中的整个文件。

我还要注意,在大多数MD5实现中,可以一次将 byte [] 数据添加到摘要函数块中,然后在最后请求散列。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top