『xxHash』——极速非加密哈希算法的事实标准

2026/06/08 sec hash · algorithm · c · simd · performance · checksum 1621 字 · 约 5 分钟 阅读
xxHash 是极速非加密哈希算法,速度接近内存带宽上限,XXH3 版本支持 SIMD 加速(SSE2/AVX2/AVX512/NEON),已移植到 50+ 编程语言,是非加密哈希领域的事实标准。

项目简介

xxHash 是由 Yann Collet(Cyan4973)开发的极速非加密哈希算法库。其设计目标是将哈希计算速度推向内存带宽的极限,在非加密哈希领域已成为事实标准。xxHash 提供了 XXH32、XXH64、XXH3(含 XXH128)三个系列算法,在速度上远超同类算法,同时保持了优秀的哈希分布质量(通过 SMHasher 全套测试)。最新版本 v0.8.3 于 2024 年底发布,仍在活跃维护中。

GitHub 数据

  • 仓库地址: Cyan4973/xxHash
  • Stars: 11,064Forks: 900
  • License: BSD 2-Clause
  • 主要语言: C / C++
  • 版本: v0.8.3(2024-12-30)
  • 维护状态: 活跃维护
  • 定位: 极速非加密哈希算法,速度接近内存限制

核心功能

  1. XXH32 / XXH64:32 位和 64 位哈希,兼容早期版本,适合通用场景
  2. XXH3(XXH128):新一代哈希算法,速度比 XXH64 提升 2-5 倍,提供 64 位和 128 位两种输出
  3. 流式增量计算:支持分块输入和增量更新,适合大文件和大数据流场景
  4. SIMD 向量化加速:利用 SSE2、AVX2、AVX-512、NEON 等指令集实现硬件级并行加速
  5. SMHasher 验证通过:通过严格的哈希质量测试套件,分布均匀性、碰撞率等指标优秀
  6. 50+ 语言移植:官方 C 核心 + 社区移植覆盖几乎所有主流编程语言

技术栈

  • C(核心):高性能底层实现,支持 GCC/Clang/MSVC
  • C++:C++ 封装版本,提供 RAII 风格的流式接口
  • SIMD 优化:SSE2 / AVX2 / AVX-512 / NEON 向量化指令
  • 50+ 移植:Python、Java、Rust、Go、JavaScript、C# 等
  • SMHasher:哈希质量验证工具

安装与使用

C 库编译

git clone https://github.com/Cyan4973/xxHash.git
cd xxHash
make

Python 版本

pip install xxhash
import xxhash

# XXH64
h = xxhash.xxh64('hello world')
print(h.hexdigest())  # 0xabcdef...

# 流式更新
h = xxhash.xxh64()
h.update(b'hello ')
h.update(b'world')
print(h.hexdigest())

# XXH3 (更快)
h3 = xxhash.xxh3_64(b'hello world')
print(h3.hexdigest())

命令行使用

# 计算文件哈希
xxhsum filename.bin

# 与 md5sum/sha256sum 类似的输出格式
xxh128sum filename.bin

适用场景

  • 哈希表实现:编程语言运行时、数据库索引的哈希计算
  • 文件完整性校验:软件包分发、备份系统的快速校验和
  • 数据去重:存储系统和备份系统中的块级去重哈希
  • 缓存键计算:Web 缓存、分布式缓存的 key 哈希
  • Bloom Filter:大数据场景下的快速存在性判断
  • 注意:非加密哈希,不可用于密码存储和数字签名等安全场景

竞品对比

对比项xxHashCityHashMurmurHashSHA-256
速度(GB/s)15-30(XXH3)6-104-80.3-0.5
哈希长度32/64/12864/12832/128256
安全性非加密非加密非加密加密安全
SMHasher 通过
SIMD 加速SSE2/AVX2/AVX512/NEON部分
标准状态事实标准Google 内部社区流行NIST 标准
速度 vs SHA-25640-50 倍快基准

参考资料

文档信息

加载评论…