利用可能なハッシュ
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 ハッシュ,
Murmur3Fとは?
Murmur3F(MurmurHash3の64ビット版とも呼ばれる)は、64ビットCPUアーキテクチャの特性を最大限に活用するように特別に設計された、高性能な非暗号的ハッシュ関数です。 Murmur3Cも128ビットのハッシュを生成しますが、Murmur3Fは32ビットブロックではなく64ビットブロックで入力を処理するように最適化されています。 これにより、高速かつ大規模なハッシュ処理が必要な現代のプロセッサにおいて、Murmur3Fは最も効率的な選択肢となります。また、MurmurHash3ファミリーの他の関数と同様に、非暗号的かつ衝突耐性のある特性を維持しています。
Murmur3F ハッシュの仕組み
Murmur3F は、スループットを最大化するために 64 ビット演算を利用します:
- 初期化:64 ビットのシードから始まり、それが内部状態に展開されます。
- 64 ビット処理: 入力は8バイト(64ビット)単位のブロックで処理されます。64ビットの乗算、回転、およびXOR演算を使用します。一度に64ビットを処理することで、32ビットベースのバージョンと比較して必要な演算回数を半分に削減します。
- 内部状態:2つの独立した64ビットのハッシュ状態(合計128ビット)を維持し、データの処理が進むにつれて並列に更新されます。
- 最終処理: 128ビットの状態に対して一連の最終的な混合演算(「アバランチ」)を実行し、すべての入力ビットがすべての出力ビットに最大限の影響を与えるようにします。
違い:Murmur3F 対 Murmur3A および Murmur3C
- Murmur3F 対 Murmur3A (32ビット):
- スループット: Murmur3Fはデータを8バイト単位で処理するのに対し、Murmur3Aは4バイト単位で処理するため、最新の64ビットCPU上ではMurmur3Fの方が大幅に高速です。
ハッシュサイズ: Murmur3Aは32ビット空間に制限されていますが、Murmur3Fははるかに大きな128ビット空間を提供するため、衝突回避が重要なアプリケーションに適しています。
Murmur3F 対 Murmur3C (128ビット):
- CPU最適化: どちらも128ビットのダイジェストを生成します。 ただし、Murmur3Cは状態の更新に32ビット演算を使用するため、32ビットハードウェア上でコードを実行する必要がある場合には適しています。一方、Murmur3Fは64ビット演算を使用するため、最新の64ビットハードウェア上では大幅に高速です。
- 実装: 最新のサーバー環境(x64)向けに開発する場合、Murmur3Fは「ネイティブ」で高性能な128ビットの選択肢となります。一方、Murmur3Cは、より移植性が高く、ハードウェアに依存しない128ビット版として機能します。