我有一个C应用程序,可以生成非常大的二进制文件,每个文件大约30GB。在编写每个文件之后,计算它的MD5校验和需要一段时间,(每个文件大约几分钟,大约。)
在将文件写入磁盘时,如何计算文件的MD5校验和?我想通过这样做,我至少可以节省重新读取文件的额外开销,以便随后计算校验和。
我正在使用C标准库来执行所有文件IO,而操作系统是Linux。
可以这样做吗?谢谢!
答案 0 :(得分:5)
这当然可以做到。基本上,您在开始编写之前初始化MD5计算。然后,每当您将一些数据写入磁盘时,也将其传递给MD5更新功能。写完所有数据后,调用最终的MD5函数来计算最终的摘要。
如果您没有任何方便的MD5代码,RFC 1321包含了提供上述操作的MD5参考实现。