什么是SHA-1?
SHA-1(安全哈希算法1)输出160位摘要(40个十六进制字符)。由NSA设计并于1995年由NIST发布(FIPS 180-1),它因数字签名、文件校验和和版本控制系统而流行。
安全提示:SHA-1已被破解;对于新系统,请使用SHA-256、SHA-3或BLAKE3。
SHA-1如何工作?
- 填充消息→长度≡448(mod 512)位
- 附加原始消息的64位长度
- 初始化五个32位字(A–E)
- 通过80个操作(四轮)处理512位块
- 输出最终的160位摘要
安全状态
- 2005 — 首次理论碰撞攻击
- 2017 — Google和CWI阿姆斯特丹展示了真实碰撞("SHAttered" PDFs)
- 浏览器现在不信任SHA-1 TLS证书
- NIST在2011年弃用了SHA-1用于数字签名
示例哈希
输入 | SHA-1哈希 |
---|---|
你好,世界! | 0a0a9f2a6772942557ab5355d76af442f8f65e01 |
密码 | 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 |
123456789 | f7c3bc1d808e04732adf679965ccc34ca7ae3441 |
(空) | da39a3ee5e6b4b0d3255bfef95601890afd80709 |
SHA-1与其他哈希函数的比较
算法 | 输出 | 安全性 | 速度 |
---|---|---|---|
MD5 | 128位 | ❌ 已破坏 | ⚡ 非常快 |
SHA-1 | 160位 | ❌ 已妥协 | ⚡ 快 |
SHA-256 | 256位 | ✅ 安全 | 🚀 中等 |
SHA-3 | 可变 | ✅ 非常安全 | 🚀 中等 |
BLAKE3 | 256位 | ✅ 安全 | ⚡ 快速 |
常见问题
SHA-1对密码安全吗?
不。请使用bcrypt、Argon2或PBKDF2。
什么是SHA-1碰撞?
碰撞是指两个不同的输入生成相同的哈希。2017年的"SHAttered"攻击证明了真实的碰撞。
为什么Git仍然使用SHA-1?
Git的设计限制了可利用性,但该项目正在迁移到SHA-256。