在C#中计算大文件的MD5SUM

我使用以下代码来计算文件的MD5SUM –

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

这通常工作正常,但如果我遇到一个大文件(~1GB) – 例如ISO映像或DVD VOB文件 – 我得到一个Out of Memoryexception。

虽然,我能够在cygwin中为大约10秒的同一文件计算MD5SUM。

请建议如何让我的程序中的大文件工作。

谢谢

我建议使用替代方法:

 MD5CryptoServiceProvider.ComputeHash(Stream) 

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

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