C#中大文件的容错MD5计算

Pou*_*sen 5 .net md5

有没有办法对大文件进行增量md5计算,但是在每个第n步保存读取位置和md5状态数据,例如当进程失败或网络/ IO发生时,它可以从最后一个已知的良好位置重新启动文件.

Pau*_*ams 2

据我所知,你不能使用内置的 MD5类来做到这一点。无法检索和恢复状态数据。现有的HashAlgorithm.State字段似乎用于对哈希操作进行健全性检查。

我也没有找到使用Microsoft Crypto API执行此操作的方法,但我可能是错的。

使用别人经过充分测试的安全代码几乎总是更好。在这种情况下,我不知道有任何能够序列化内部状态的实现。

我认为你可以为此编写自己的 MD5 类。请参阅MD5 规范。与输入的大小相比,涉及的内部状态非常小。可以将此状态公开为某种不透明对象,调用者可以将其保留并稍后恢复。