2009-08-24 165 views
0

说我有“N”的文件数,对每一个我有CRC32,MD5和SHA1摘要验证文件摘要

现在,文件的这些“N”数字实际上是分割文件/单个大容量文件的档案。

当这些较小的文件重组/加入到较大的文件时,我们也可以计算这个较大文件的摘要。

我的问题是:有没有办法来验证这些小文件的摘要组合是否等于大文件的摘要?

例如,假设我有一个文件分割成4个部分与消化写0xDE,写入0xAD,0xBE,0xEF

说,在加入后,较大的文件有消化将0xC0

有什么办法来验证该连接(0xDE,0xAD,0xBE,0xEF)== 0xC0,其中'连接'是我正在寻找的神奇操作/公式/ algorthm?

回答

1

不要这样想,对不起
这将使它比较容易破解的MD5,如果这是可能的

编辑。如果你的意思是我可以计算零件MD5中总和的MD5 = no。
但是,如果您只是想确认部件是否正确,则可以始终计算每个零件的MD5,然后计算这些MD5的MD5。
显然要验证它,你需要执行相同的序列,所以只有完整文件的人将不得不分裂它来做同样的检查。

+0

破解一个MD5 ..怎么这样? – PoorLuzer 2009-08-24 17:52:32

+0

它可以让你用已知的MD5构建块的字典,然后如果你想为假消息生成一个特定的摘要,你将会添加一个任意填充块的库。 – 2009-08-24 18:18:14

+0

MD5不应该再用于安全散列,现在已经证明它不安全。 – skaffman 2009-08-24 19:17:40

0

如果您不想加入文件,可以使用TransformBlock方法将它们逐个传递给散列算法。随着调用TransformFinalBlock,给你的结果。