コンテンツへスキップ
uencoder

MurmurHash

MurmurHashはAustin Applebyが設計した非暗号学的ハッシュで、乗算と回転(rotate)操作により優れた分布と高速性を実現する。

目的

ハッシュテーブル向けに、低衝突かつ高速な非暗号学的ハッシュを提供する。

メカニズム

4バイトブロックごとに定数との乗算、回転、再乗算でミックスを行い、端数バイトは最後に処理する。ファイナライザ(fmix32)がさらに拡散を加える。MurmurHash3は32/128ビット出力に対応するが、非暗号学的であり既知の衝突が存在する。

ユースケース

  • ハッシュテーブルとブルームフィルタ
  • RustのHashMapのデフォルトハッシャー
  • データベース内部のハッシュ化
  • ロードバランシングのシャーディング

例

  • 入力
    hello
    Output
    0x248bfa47

    MurmurHash3 x86_32

よくあるエラー

Using MurmurHash for persistent keys (unstable across versions)
Use a version-pinned hash or a cryptographic hash

関連用語

関連ツール

References