9

もちろん、MD5 は CRC32 よりも優れており、SHA1 は MD5 よりも優れています。また、CRC32 よりもはるかに低速です。

転送されたファイルの一貫性をチェックする方法を考えており、CRC32 が最速のオプションです。

整合性チェックで CRC32 がどれほど悪いかはどこにもわかりませんでした(つまり、CRC32 が不正な形式のファイルを検出しないのはなぜでしょうか)。

4

2 に答える 2

12

http://www.mathpages.com/home/kmath458.htmからの引用:

したがって、データの破損が完全にランダムな方法で文字列に影響を与えると仮定すると、つまり、破損した文字列が元の文字列とまったく相関しないと仮定すると、破損した文字列が検出されない確率は 1/(2^ n) . これは、16 ビット CRC がデータのエラーを検出できない確率が 1/(2^16) = 1.5E-5 であり、32 ビット CRC が 1 の確率であると人々が言う根拠です。 /(2^32)、これは約 2.3E-10 (10 億分の 1 未満)です。

私の意見: エラー検出には CRC-32 で十分です。広く使われています。ただし、「ハッシュ関数」として使いたい場合は安全ではありません。

于 2012-04-29T11:54:42.377 に答える
1

CRC-32 は他のアルゴリズムと比較して 32 ビットしか使用しないため、CRC-32 を使用すると衝突 (同じハッシュ出力で異なるデータ) が簡単に発生する可能性があります。MD5 は 128 ビット、SHA-1 は 160 ビット、SHA-2 (SHA256/512 シリーズ) は 224 ビット - 512 ビットです。(使用するものによって異なります)。また、SHA-2 シリーズでは衝突は見られませんでした。

データの衝突を引き起こす可能性のある数学と確率の詳細については。ハッシュ衝突誕生日のパラドックス問題を探してください

于 2012-04-29T11:54:14.900 に答える