全部工具 / 对比指南 / SHA-1、SHA-256、SHA-512 怎么选

SHA-1、SHA-256、SHA-512 怎么选

一句话结论

新项目一律用 SHA-256。SHA-1 已在 2017 年被实际碰撞攻击攻破,不能再用于任何安全场景。SHA-512 更安全但在 32 位平台和短消息上更慢,只在需要更长摘要或跑在 64 位环境时才有优势。

核心区别对照

摘要长度SHA-1SHA-256SHA-512
安全状态已攻破,禁用安全,当前标准安全,余量更大
实际碰撞攻击已实现(SHAttered,2017)无无
32 位平台性能快快较慢
64 位平台性能快快与 SHA-256 相当或更快
适用场景仅遗留系统校验(非安全)签名、证书、校验、密码派生长摘要需求、64 位服务端

SHA-1

曾经的默认选择,2017 年 Google 与 CWI 用 SHAttered 攻击造出了两个内容不同但 SHA-1 相同的 PDF,正式宣告其不安全。现在主流浏览器和证书机构已全面停用。除非你在对接改不动的老系统,否则不要在新代码里出现它。

SHA-256 / SHA-512

同属 SHA-2 家族,目前都没有已知的实际攻击。SHA-256 是事实标准:TLS 证书、代码签名、文件校验、JWT 都是它。SHA-512 摘要更长、抗量子余量更大,在 64 位 CPU 上处理长消息时甚至更快,但在 32 位环境(部分嵌入式、老设备)会明显变慢。存密码时两者都不对——应该用 bcrypt、scrypt 或 Argon2。

怎么选

相关工具

常见问题

SHA-256 输出为什么是 64 个字符

256 bit 摘要,每字节写成 2 位十六进制,256 ÷ 8 × 2 = 64 个字符。

SHA-512 一定比 SHA-256 安全吗

理论上抗碰撞强度更高,但对目前所有实际攻击方式而言两者都绰绰有余,选择时更多看平台性能与生态兼容性。

能用哈希存用户密码吗

不能。SHA 系列设计目标是快,正好利于暴力破解。存密码必须用专门的慢哈希:Argon2、bcrypt 或 scrypt。