コンテンツへスキップ
uencoder

xxHash

xxHashは、Yann Colletが設計した極めて高速な非暗号学的ハッシュで、現代のCPUでメモリ帯域の限界に迫り、LZ4/Zstd圧縮と組み合わせて使われる。

目的

RAM帯域級の超高速な非暗号学的ハッシュを提供し、高性能チェックサムとシャーディングに使う。

メカニズム

XXH32/XXH64は4つのアキュムレータを維持し、16バイトごとに1ラウンド処理する。acc = acc ⊕ (input × prime)、acc = rotl(acc, 13) × prime。アキュムレータは最後にマージされアバランチされる。XXH3はAESハードウェアアクセラレーションでさらに高速である。

ユースケース

  • Zstd/LZ4の圧縮検証
  • RustのxxHashクレート
  • 高頻度のハッシュテーブル
  • ゲームエンジンの内部

例

  • 入力
    hello
    Output
    0x391c7cb6

    XXH32

よくあるエラー

Using xxHash for cryptographic authentication
xxHash is not cryptographic; use HMAC

関連用語

関連ツール

References