题
我正在使用以下代码来计算文件的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 []
数据添加到摘要函数块中,然后在最后请求散列。
不隶属于 StackOverflow