SHA-1、SHA-256、SHA-512 哈希算法家族怎么选
SHA-1 已被碰撞攻击攻破,安全场景一律用 SHA-256 起步。讲清哈希族谱、输出长度、性能差异与各自适用场景。
一、SHA 家族族谱
- SHA-1:160 位输出。2017 年 Google 公布实际碰撞案例,安全场景已淘汰(Git 正在迁移,TLS 证书禁用)。
- SHA-2 家族:SHA-256/224、SHA-512/384。目前主力,无实际攻击。
- SHA-3:完全不同的海绵结构,作为 SHA-2 的备胎存在。
另注意:SHA 与 MD5 一样是哈希不是加密,不可逆、无密钥。
二、256 还是 512?
- SHA-256:32 字节摘要,安全余量充足,32 位 CPU 上更快,事实默认选择。
- SHA-512:64 字节摘要,在 64 位 CPU 上反而更快(每轮处理更多数据)。
- 截断版 SHA-224/384:摘要短一点,安全余量略降,特殊场景用。
日常签名、证书、区块链:SHA-256 一步到位,不用纠结。
三、典型用途
- 完整性校验:下载文件比对 SHA-256,确认没被篡改。
- 数字签名:对哈希签名而非原文(快且安全)。
- 密码存储:不行!SHA 太快,暴力破解容易。存密码要用 bcrypt/argon2 这类慢哈希加盐。
四、碰撞与长度扩展
两个注意点:
- 碰撞攻击:SHA-1 已沦陷,MD5 更早;SHA-2 目前安全。
- 长度扩展攻击:SHA-256 直接做 MAC(message+secret 拼接)会被攻击,认证要用 HMAC 结构而非裸拼。
在线体验
不用装任何环境,直接用本站MD5/SHA 哈希工具在线操作,数据都在浏览器本地处理,方便又安全。
常见问题
SHA-256 会被量子计算机破解吗?
Grover 算法理论上把暴力搜索加速开根号,256 位安全余量降到 128 位,仍然够用。真正受重创的是 RSA/ECC 这类公钥算法,哈希相对淡定。
为什么存密码不能用 SHA-256?
SHA-256 设计得太快:GPU 每秒可算几十亿次,弱密码字典跑一遍秒解。bcrypt/argon2 故意设计得慢且吃内存,专治暴力破解。
同一个文件两次算 SHA-256 会不一样吗?
不会。哈希是确定性算法,相同输入永远得到相同输出。不一样说明文件本身变了(哪怕一个比特)。
