利用可能なハッシュ
MD2 ハッシュ, MD4 ハッシュ, MD5 ハッシュ, SHA1 ハッシュ, SHA224 ハッシュ, SHA256 ハッシュ, SHA384 ハッシュ, SHA512/224 ハッシュ, SHA512/256 ハッシュ, SHA512 ハッシュ, SHA3-224 ハッシュ, SHA3-256 ハッシュ, SHA3-384 ハッシュ, SHA3-512 ハッシュ, RIPEMD128 ハッシュ, RIPEMD160 ハッシュ, RIPEMD256 ハッシュ, RIPEMD320 ハッシュ, WHIRLPOOL ハッシュ, TIGER128,3 ハッシュ, TIGER160,3 ハッシュ, TIGER192,3 ハッシュ, TIGER128,4 ハッシュ, TIGER160,4 ハッシュ, TIGER192,4 ハッシュ, SNEFRU ハッシュ, SNEFRU256 ハッシュ, GOST ハッシュ, GOST-CRYPTO ハッシュ, ADLER32 ハッシュ, CRC32 ハッシュ, CRC32B ハッシュ, CRC32C ハッシュ, FNV132 ハッシュ, FNV1A32 ハッシュ, FNV164 ハッシュ, FNV1A64 ハッシュ, JOAAT ハッシュ, MURMUR3A ハッシュ, MURMUR3C ハッシュ, MURMUR3F ハッシュ, XXH32 ハッシュ, XXH64 ハッシュ, XXH3 ハッシュ, XXH128 ハッシュ, HAVAL128,3 ハッシュ, HAVAL160,3 ハッシュ, HAVAL192,3 ハッシュ, HAVAL224,3 ハッシュ, HAVAL256,3 ハッシュ, HAVAL128,4 ハッシュ, HAVAL160,4 ハッシュ, HAVAL192,4 ハッシュ, HAVAL224,4 ハッシュ, HAVAL256,4 ハッシュ, HAVAL128,5 ハッシュ, HAVAL160,5 ハッシュ, HAVAL192,5 ハッシュ, HAVAL224,5 ハッシュ, HAVAL256,5 ハッシュ,
XXH32とは?
XXH32は、32ビットレジスタ上で動作する高性能な非暗号ハッシュ関数です。Yann Colletによって開発されたxxHashファミリーの一員であり、RAMの制限内で可能な限り最高の速度を実現するように設計されています。 数学的な複雑さを優先する従来のアルゴリズムとは異なり、XXH32は最新のプロセッサアーキテクチャを最大限に活用するように設計されており、32ビット出力の要件において利用可能なハッシュ関数の中で最速クラスの性能を誇ります。
XXH32ハッシュの仕組み
XXH32は、CPUのストールやデータ依存性を最小限に抑える、高度に最適化されたループ構造を採用しています:
- 初期化:アルゴリズムは32ビットのシード値から開始し、4つの内部32ビットアキュムレータを初期化します。
- メインループ:入力データは16バイト単位のブロックで処理されます。各ブロックは、「素数定数」(
0x9E3779B1)による乗算を経て4つのアキュムレータに混合され、続いてビット単位の回転が行われます。これにより、高い分散性(アバランチ効果)が実現されます。 - ストリーム処理: 4つの独立したアキュムレータを維持しているため、アルゴリズムは混合プロセスを効果的に並列化し、CPUが複数の命令を同時に実行できるようにします。
- 最終処理:入力全体の処理が完了した後、4つのアキュムレータが統合され、一連の「アバランシェ」演算が実行されます。これにより、すべての入力ビットが最終的な32ビットの結果に寄与することが保証されます。
XXH32の主な利点
- 極めて高いスループット:XXH32は「RAM速度」で動作するように特別にチューニングされており、ボトルネックとなるのは通常、アルゴリズムの計算オーバーヘッドではなく、システムのメモリ帯域幅です。
- 優れた分布特性: その高速性にもかかわらず、非常に高品質な分布を維持しています。SMHasherスイート(非暗号ハッシュを評価するための業界標準)のすべてのテストに合格しており、32ビットアルゴリズムとしては優れた衝突耐性を示しています。
- 低レイテンシ:コンパクトで効率的なループ構造により、他のより複雑なアルゴリズムでは起動時のレイテンシが発生しがちな中小規模のデータセットにおいて、極めて優れたパフォーマンスを発揮します。
- 移植性:依存関係のない純粋なC言語で実装されているため、異なるハードウェアアーキテクチャやオペレーティングシステム間での移植性が非常に高いです。