2013-02-08 20 views
0

我有一個存儲庫,用於存儲我的所有圖像文件。我知道有很多圖像是重複的,我想刪除每個重複的圖像。如何找出兩個二進制文件是否完全相同

我想如果我爲每個圖像文件生成校驗和並將文件重命名爲其校驗和,我可以通過檢查文件名輕鬆找出是否有重複的文件。但問題是,我不確定選擇使用校驗和算法。例如,如果我使用MD5生成校驗和,我可以完全相信校驗和是否相同,這意味着文件完全相同?

回答

0

得到同樣的校驗和2個不同的文件的機會是微乎其微的,但不能絕對保證(Pigeonhole principle)。如何苗條​​的指示可能是GIT使用SHA-1校驗和軟件開發源代碼,包括Linux,也從未造成任何已知的問題,所以我會說,你是安全的。我會使用SHA-1而不是MD5,因爲如果你真的偏執,它會稍微好一些。

+1

「這是稍微好一點,如果你真的偏執狂」描述你對我的態度極大的:)謝謝:) –

+0

SHA-1是爲160bit,而MD5爲128bit。因此,SHA-1的結果將是更加獨特,但計算的時間會稍長。如果你想和甚至更長的哈希,你可以使用類似SHA-256這是更長久,甚至會更慢計算。 – neelsg

0

爲了確保您最好遵循兩步驟過程:首先計算每個文件的校驗和。如果校驗和不同,則確定文件不相同。如果你碰巧找到一些具有相同校驗和的文件,那麼沒有辦法通過逐位比較來100%確定它們是否完全相同。無論使用何種哈希算法,這都適用。

您會得到的是一個巨大的節省時間因爲這樣做逐位比較每一個可能對文件將永遠需要,每天一邊比較滿手可能的候選人是相當容易的。

相關問題