SHA-1 在线哈希与校验工具,覆盖三种用法:
全部计算在浏览器本机完成,文本与文件都不会上传到服务器。
SHA-1(Secure Hash Algorithm 1)由 NSA 设计、NIST 于 1995 年发布为 FIPS PUB 180-1,是 SHA-0 的修正版本。
| 项目 | 说明 |
|---|---|
| 输出长度 | 160 位 = 20 字节 = 40 位十六进制 |
| 分组长度 | 512 位 |
| 发布机构 | NIST(FIPS 180-1,1995) |
| 结构 | Merkle–Damgård 迭代结构 |
| 是否可逆 | 不可逆 |
| 安全性 | 碰撞已被实际构造,不推荐用于安全场景 |
因此:SHA-1 不能用于数字签名、证书、防篡改校验等对抗性场景,也不能用于口令存储(速度太快)。它目前仅适合旧系统兼容、非对抗性的文件完整性校验。
| 场景 | 说明 |
|---|---|
| Git 对象 ID | Git 用 SHA-1 标识 blob / tree / commit,git rev-parse HEAD 得到的就是 SHA-1。Git 正在逐步迁移到 SHA-256。 |
| 旧版 TLS 与代码签名 | 大量历史系统仍在使用,出于兼容性暂时无法立即替换。 |
| 磁力链接 / BT 种子 | BitTorrent v1 的 info hash 是 SHA-1。 |
| 文件分发校验 | 很多开源项目至今只发布 MD5 与 SHA-1 校验值,属于历史习惯。 |
| HMAC-SHA1 | 在 HMAC 结构下 SHA-1 的碰撞攻击不直接适用,但仍建议迁移到 HMAC-SHA256。 |
| 格式 | 说明 |
|---|---|
| 小写十六进制 | 默认输出,40 个字符,最常用 |
| 大写十六进制 | 40 个大写字符,部分旧工具的输出风格 |
| Base64 | 20 字节摘要的 Base64,28 个字符含填充 |
| 分段(每 8 位) | 便于人工核对的分组显示 |
SHA-1 和 SHA-256 该选哪个?
SHA-1 是加密算法吗?能解密吗?
SHA-1 的输出为什么是 40 个字符?
为什么同一文本的 SHA-1 和别人不一样?
多大的文件可以计算?
文件不会上传到服务器吧?
SHA-1 和 HMAC-SHA1 有什么区别?
为什么 SHA-1 不能用来存密码?
Git 还在用 SHA-1 吗?
SHAttered 攻击是什么?
SHA-1 还能用吗?
SHA-1 是什么?