首页/安全/加密与证书速查/BLAKE2 哈希函数
加密算法基础95 条

BLAKE2 哈希函数

RFC 7693 定义的哈希家族:BLAKE2b 面向 64 位平台、BLAKE2s 面向 32 位平台;内置密钥化与可调输出长度,速度优于同类通用哈希。

加密与证书速查安全更新于 2026-10-13

BLAKE2 是什么

BLAKE2 是由 RFC 7693 定义的哈希家族:BLAKE2b 面向 64 位平台,最长输出 64 字节;BLAKE2s 面向 32 位平台,最长输出 32 字节。它内置密钥化模式与可调输出长度,在很多平台上速度优于同类的通用哈希,因此在文件校验、内部完整性与部分密码库的默认哈希中被广泛使用。它未被 NIST 标准化,合规场景需要按适用标准另行评估。

基本信息

标准RFC 7693
变体BLAKE2b 最长 64 字节,BLAKE2s 最长 32 字节
内置能力密钥化模式与可调输出长度
常见位置文件校验、内部完整性、部分库的默认哈希

典型使用场景

  • 文件与镜像校验:需要更快的替选摘要算法时
  • 内部完整性校验:对性能敏感且不需要跨标准互认
  • 库默认哈希:许多语言运行时把它作为快速哈希选项
  • 密钥化校验:在协议允许时替代部分消息认证用途
  • 对参数一致性要求高的场景:需要显式约定输出长度

计算 BLAKE2

计算 BLAKE2
b2sum file.bin                              # 命令行校验值
python3 -c "import hashlib; print(hashlib.blake2b(b'data', digest_size=32).hexdigest())"
python3 -c "import hashlib; print(hashlib.blake2b(b'data', key=b'secret').hexdigest())"
openssl dgst -blake2b512 file.bin            # 部分构建提供

两个变体

变体面向平台最长输出常用输出
BLAKE2b64 位平台64 字节32 或 64 字节
BLAKE2s32 位平台32 字节16 或 32 字节
输出长度是可调参数,跨平台互校时必须显式约定相同的输出长度与变体,否则同一条数据会得到不同的校验值。

使用注意

  • 跨系统对接时同时约定变体与输出长度
  • 密钥化模式不能直接替代协议中规定的消息认证构造
  • 合规场景先确认该算法是否在允许清单内
  • 用于口令存储不合适,应使用专用算法
密钥化模式是一种带密钥的哈希,与标准消息认证构造的接口语义和安全假设并不相同;协议若已规定认证方式,应按协议实现而不是替换。

易错点

  • 两个变体的输出长度上限不同,跨平台约定输出长度才能互校
  • 密钥化模式直接替代协议约定的认证构造,破坏协议一致性
  • 把它用于口令存储:缺少专用的成本参数设计,应使用专门算法
  • 忽略合规适用范围:未被相应标准采纳的场景不能随意替换
  • 只看摘要长度不看变体:不同变体对同一数据输出不同结果

数据来源与参考

  • RFC 7693(BLAKE2)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌