2009-08-24 148 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,給你的結果。