1

すべての画像ファイルを保存するリポジトリがあります。重複している画像がたくさんあることを知り、重複した画像を1つずつ削除したいと考えています。

各画像ファイルのチェックサムを生成し、ファイルの名前をそのチェックサムに変更すると、ファイル名を調べることで重複したファイルがあるかどうかを簡単に見つけることができると思いました。しかし、問題は、使用するチェックサム アルゴリズムの選択について確信が持てないことです。たとえば、MD5 を使用してチェックサムを生成する場合、ファイルがまったく同じであることを意味するチェックサムが同じであるかどうかを正確に信頼できますか?

4

3 に答える 3

1

2 段階の手順に従うのが最善であることを確認するには、まずすべてのファイルのチェックサムを計算します。チェックサムが異なる場合は、ファイルが同一ではないことを確認してください。チェックサムが等しいファイルを偶然見つけた場合、それらが本当に同一であるかどうかを 100% 確認するためにビットごとの比較を行う方法はありません。これは、使用されるハッシュアルゴリズムに関係なく保持されます。

可能性のあるファイルのすべてのペアをビットごとに比較するのは永遠に 1 日かかりますが、可能性のある候補をすべて比較するのはかなり簡単です。

于 2014-10-22T06:47:29.380 に答える
1

セキュリティ フォーラム ( https://security.stackexchange.com/a/3145 ) での同様の質問への回答から判断すると、衝突率は 2^64 メッセージあたり約 1 回の衝突です。ファイルが異なっていて、コレクションが大きくない (つまり、この数に近い) 場合は、md5 を安全に使用できます。

また、非常によく似た質問への回答も参照してください: MD5 が衝突を生成する前にランダムな要素はいくつありますか?

于 2013-02-08T07:53:13.637 に答える
1

2 つの異なるファイルで同じチェックサムを取得する可能性は非常に低いですが、絶対に保証することはできません (ピジョンホールの原則)。GIT が Linux を含むソフトウェア開発ソース コードに SHA-1 チェックサムを使用し、既知の問題を引き起こしたことがないことは、どれほどスリムであるかを示しているため、安全であると言えます。MD5 の代わりに SHA-1 を使用します。

于 2013-02-08T07:59:06.620 に答える