MurmurHash
MurmurHashはAustin Applebyが設計した非暗号学的ハッシュで、乗算と回転(rotate)操作により優れた分布と高速性を実現する。
目的
ハッシュテーブル向けに、低衝突かつ高速な非暗号学的ハッシュを提供する。
メカニズム
4バイトブロックごとに定数との乗算、回転、再乗算でミックスを行い、端数バイトは最後に処理する。ファイナライザ(fmix32)がさらに拡散を加える。MurmurHash3は32/128ビット出力に対応するが、非暗号学的であり既知の衝突が存在する。
ユースケース
- ハッシュテーブルとブルームフィルタ
- RustのHashMapのデフォルトハッシャー
- データベース内部のハッシュ化
- ロードバランシングのシャーディング
例
- 入力
helloOutput0x248bfa47MurmurHash3 x86_32
よくあるエラー
- Using MurmurHash for persistent keys (unstable across versions)
- Use a version-pinned hash or a cryptographic hash