c# - C#计算大文件的MD5SUM

标签 c# md5 hash large-files

我正在使用以下代码来计算文件的 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/

相关文章:

c# - MvxTableViewCell 上的属性文本

node.js - 从字符串中获取哈希值,例如 hashids

java - 加密和压缩文件名

c# - 命令初始化静态参数

c# - 如何验证包含工作表名称的 Excel 单元格引用?

c# - 通过配置使用验证应用程序 block 时未调用自定义验证器

ruby - 在 MongoDB 中高效存储 md5 哈希的最佳实践

python - 范围内的整数是否存在 md5 冲突 (1,1000000000)

ios - 如何使用 SWIFT 4 创建 HMAC MD5 十六进制签名?

arrays - 如何将哈希转换为具有特定顺序的数组? ( ruby )