2010-12-06 2 views
3

私は約2MBのデータレコードを何百万も持っています。これらのデータはすべてファイルに格納され、そのレコードに関連付けられた一連の他のデータがデータベースに格納されています。MD5を使用して一意に識別できるデータ数(多くのMB)

プログラムが実行されると、データレコードの1つがメモリに表示され、関連するデータを生成する必要があります。これを行うために、私はメモリのMD5をとり、このハッシュをキーとしてデータベースに使用することを想像しています。このキーは他のデータの検索に役立ちます。

データの内容のMD5ハッシュが2MBのデータを一意に識別する適切な方法である場合、つまり、あまりにも多くの衝突について心配することなくMD5ハッシュを使用できますか?

私は衝突の可能性があることを認識しています。何百万という2Mバイトのデータレコードで衝突の可能性はどれくらいありますか?衝突は起こりやすいでしょうか?ハードディスクの故障や他のコンピュータの故障と比べるとどうでしょうか? MD5を安全に識別するために使用できるデータの量何百万ものGBファイルはどうですか?

私は悪意のある行為やデータの改ざんを心配していません。私は操作されたデータを受け取らないような保護を持っています。

答えて

3

これは、いわゆるBirthday paradoxになります。ウィキペディアのページには、衝突確率を評価するための数式が簡略化されています。それは非常にいくつかの非常に小さい数になります。

次の質問は、対処方法10 -12の衝突確率 - this very similar questionを参照してください。

+0

年には2^128日間しかありません。 – Gumbo

+0

「10^18〜10^15は一般的なハードディスクの訂正不可能なビット誤り率です。[2]理論上、MD5は128ビットで、約8,200億のドキュメントまでこの範囲にとどまるはずです。 –

関連する問題