CH-J Server Manager通过 SSH 管理服务器
菜单
全部指南与文章 →

SHA-256、SHA-512 与 BLAKE3:该用哪种校验和?

了解这三种算法在安全性、速度和兼容性上的差异、校验和无法证明什么,以及如何选择。

简要结论

使用文件发布者提供的算法,因为比较时必须使用相同算法。对于新任务,SHA-256 的兼容性最好,SHA-512 也是不错的选择。对于自己的大规模数据,如果所有相关系统都有对应工具,BLAKE3 是速度最快的选择。目前这三种算法都被认为是安全的,均没有已知的实用攻击方法。

它们有何不同

SHA-256 和 SHA-512 属于 NIST 标准化的 SHA-2 系列,合规规则通常要求使用它们。BLAKE3 较新,并非 NIST 标准,因此可能不满足此类规则。SHA-256 和使用默认输出的 BLAKE3 都生成 256 位结果,相当于约 128 位的抗碰撞强度。SHA-512 生成 512 位结果,抗碰撞强度约为 256 位。实际中,这两个级别都远超可行攻击的能力范围。

速度取决于硬件

BLAKE3 的设计充分利用多个 CPU 核心和现代向量指令,因此处理大文件时通常明显领先。两种 SHA-2 算法的表现则因硬件而异:在没有专用指令的 64 位 CPU 上,SHA-512 通常更快;带有 SHA 扩展的 CPU 则能加速 SHA-256。请在自己的机器上用大文件测量,因为缓存和磁盘都会影响结果。b3sum 可能需要单独安装。

time sha256sum large.iso
time sha512sum large.iso
time b3sum large.iso

校验和能证明什么

校验和匹配说明文件与计算该摘要时使用的文件完全相同,但不能说明文件由谁制作。如果攻击者能同时修改下载文件和同一页面上的校验和,比较仍然会通过。要验证来源,需要从独立的可信渠道获取摘要,或使用 GPG 等签名。

sha256sum -c SHA256SUMS
gpg --verify SHA256SUMS.asc SHA256SUMS

应避免什么

MD5 和 SHA-1 的抗碰撞能力已被攻破,不应依靠它们防止恶意篡改。旧清单中可能仍会出现它们,但它们只能用于检测意外损坏。CRC-32 和 xxHash 等非加密函数面向速度和意外错误检测,绝不能用于安全保障。

CH-J Server Manager 中的校验和

Hash & Checksum 模块包含这三种算法,将 SHA-256、SHA-512 和 BLAKE3 标为推荐,将 MD5 和 SHA-1 标为已攻破。它可以计算摘要、比较文件以及检查预期值。该模块无法判断预期值本身是否可信,因此请从可信来源获取它。应用会同时使用 SHA-512 和 OpenPGP 签名校验自身更新。

详细文档

NIST FIPS 180-4 →

BLAKE3 specification →

生物识别解锁与安全 →