次のいずれかの32ビットチェックサムアルゴリズムはありますか?
- 入力データサイズが1KB未満の場合のハッシュ衝突確率が小さい?
- 衝突はより均一な分布でヒットします。
これらはCRC32に関連しています。32ビットのストレージスペースの制限のため、私は実際には最初のプロパティを当てにしていません。しかし、2番目の...改善がある可能性があるようです。
何か案は ?ありがとう。(具体的な実装が必要です。Cの方が優れていますが、C ++ / C#などの最初の実装も問題ありません)。
MurmurHashはどうですか?このハッシュは、分布が良く(カイ二乗検定に合格)、なだれ効果が良いと言われています。また、非常に優れた計算速度。
最初の基準ではありません。32ビット出力を備えた適切に設計されたハッシュ関数は、入力の任意のペアに対して2^32分の1の確率で衝突します。2番目の基準はあまり明確に定義されていませんが、使用できる統計的検定は確かにいくつかあり、誰かがそれを行ったと確信しています(衝突間隔のカイ2乗?)。実装の必要性については、独自のハッシュまたは暗号化をローリングするときにセキュリティの問題やパフォーマンスの低下のリスクが高いため、よく知られたハッシュの実装ではないハッシュ関数の提案されたコードを受け入れないことを強くお勧めします。よく知られているが悪いハッシュ関数は、前者の方が目玉が多いという理由だけで、後者の関数が十分にテストされ、「良好な」衝突分布を持っている場合でも、自分で設計したものよりも優れています。