web-dev-qa-db-ja.com

チェックサムはどのくらいユニークですか?

並べ替えが必要なファイルがたくさんあります。残念なことに、同じ名前で内容が異なる多くのファイルがあり、ファイル名が異なる同じ内容があります。

md5sumを使用してファイルのチェックサムを生成することを考えていますが、知っておく必要があります。2つの異なるファイル(つまり、異なるコンテンツ)が同じチェックサムを生成する可能性はありますか?

もしそうなら、それはどのくらい起こりそうですか?

2つの異なる関連のない(つまり、同じ「ファミリ」ではない)チェックサムプログラムを使用して2つのチェックサムを生成することは可能でしょうか。それは一度に両方に起こることは決してないでしょうか?

10
Baard Kopperud

内容が同じでファイル名が異なる2つのファイル:file1およびfile2 ):

cat file1
this is a simple file

cat file2
this is a simple file

md5sum file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file2
7de45bf879db49de7e2eacea23e6c165  file2

内容が異なるがファイル名が同じ2つのファイル:file1およびfile1

cat file1
this is a simple file
cat file1
this is a simple file with extra contents
md5sum file1 #first file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file1 #second file1
c7c8f3fd9ddd7a926c31416a69063e4e  file1

wiki エントリから、

ただし、実際に同じハッシュを持つように特別に作成されていない限り、実世界の2つの同一でないファイルが同じMD5ハッシュを持つことはほとんどありません。

しかし、 MD5 アルゴリズムには独自の欠点があります。

ただし、MD5の衝突が簡単に発生するようになったため、ファイルを作成したユーザーが同じチェックサムを使用して2番目のファイルを作成する可能性があるため、この手法では、なんらかの形式の悪意のある改ざんから保護できません。また、場合によっては、チェックサムは信頼できません(たとえば、ダウンロードされたファイルと同じチャネルを介して取得された場合)。この場合、MD5はエラーチェック機能のみを提供できます。破損または不完全なダウンロードを認識します。これは、大きなファイルをダウンロードするときに可能性が高くなります。

sha1 アルゴリズムを使用する場合、衝突の生成はそれほど簡単ではないため、チェックサムの計算にはsha1を使用することをお勧めします。 here を見るとわかるように、sha1チェックサムの生成は非常に簡単です。

10
Ramesh