首页/安全/加密与证书速查/SHA-512 摘要算法
加密算法基础95 条

SHA-512 摘要算法

512 位输出、1024 位块、80 轮、64 位字运算;在 64 位平台上效率高,含 SHA-512/224、SHA-512/256 截断变体,也是 Ed25519 签名内部使用的哈希。

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

SHA-512 是什么

SHA-512 是 FIPS 180-4 定义的哈希函数:输出 512 位(64 字节)、块长 1024 位、80 轮、按 64 位字运算,因此在使用 64 位寄存器的平台上往往比 SHA-256 更快。家族里还有 SHA-512/224 与 SHA-512/256 两个截断变体,它们使用不同初值,与 SHA-224/SHA-256 并不是同一算法。

基本信息

标准FIPS 180-4 §6.4 及后续小节
输出长度512 位(64 字节)
块长度1024 位(128 字节)
字长 / 轮数64 位 / 80 轮
截断变体SHA-512/224、SHA-512/256(使用不同初值)
常见用途大文件校验、HMAC、Ed25519 内部哈希、部分签名场景

典型使用场景

  • 大文件校验:64 位平台上吞吐优于 SHA-256,适合镜像与备份校验
  • HMAC-SHA512:在部分协议与接口签名中出现
  • 签名摘要:与 P-521 等高强度公钥搭配时使用
  • Ed25519 内部哈希:签名方案内部以此为哈希
  • 需要短输出又要 64 位结构:可使用 SHA-512/256 并与对端明确约定

使用与校验

使用与校验
# 文件校验:-c 回验清单,输出 OK 或 FAILED
sha512sum file.iso > file.iso.sha512
sha512sum -c file.iso.sha512
# 与 openssl 交叉验证,结果应完全一致
openssl dgst -sha512 file.iso
# 三个成员的输出长度不同,可据此快速判断
printf '%s' abc | openssl dgst -sha512
printf '%s' abc | openssl dgst -sha384
# 截断变体需要明确的算法名,不能靠简单截断实现
openssl list -digest-algorithms | grep -i 'sha512-256'

成员与用途

成员输出结构典型用途
SHA-512512 位64 位字,80 轮大文件校验、HMAC、Ed25519 内部哈希
SHA-384384 位64 位字,80 轮P-384 场景与部分 TLS 套件
SHA-512/256256 位64 位字,不同初值需要短输出但偏好 64 位结构
SHA-512/224224 位64 位字,不同初值较少使用,兼容个别标准
截断变体不是「截断」:SHA-512/256 使用与 SHA-512 不同的初始向量,因此结果既不是 SHA-512 的前 32 字节,也不等于 SHA-256。跨系统对接时若一方按截断实现,会得到完全不同的摘要,且报错通常只写校验失败。
性能结论要按平台实测:64 位 CPU 上 SHA-512 通常更快,但部分硬件加速指令只覆盖 SHA-256,此时 SHA-256 反而占优。选型前用 openssl speed -evp sha256 与 sha512 实测更稳妥。
与 SHA-256 的取舍也受协议约束:TLS 套件、证书签名算法与部分设备接口都规定了可用哈希,若对端只支持 SHA-256,即便 SHA-512 在本地更快也不能替换。选型顺序是先满足协议与对端要求,再在可选范围内做性能比较。

易错点

  • 把 SHA-512/256 与 SHA-256 混用:初值不同,结果完全不同,跨系统校验会静默失败
  • 按「位数越大越慢」推断性能:64 位平台上 SHA-512 可能比 SHA-256 更快,应以实测为准
  • 用截断方式伪造短摘要:某些系统需要短输出时直接截断 SHA-512,不符合标准且不被对端接受
  • 在校验场景只比对摘要前缀:人工比对容易漏字符,脚本应精确匹配完整值
  • 把 SHA-512 用于口令存储:仍然是无盐单轮哈希,口令场景必须使用 Argon2id 等方案

数据来源与参考

  • FIPS 180-4 §6.4-6.7(SHA-512 及其截断变体)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌