SHA-1 哈希计算
免费在线 SHA-1 哈希计算 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。
结果将显示在这里...
输入 → 计算哈希
使用指南
关于 SHA-1
SHA-1(Secure Hash Algorithm 1)是美国国家安全局(NSA)设计、美国国家标准与技术研究院(NIST)于 1995 年发布的密码哈希算法。SHA-1 将任意长度的数据转换为固定的 160 位(40 个十六进制字符)哈希值。SHA-1 曾是最广泛使用的哈希算法之一,但由于安全性问题,已被认为不安全。2017 年,Google 成功演示了 SHA-1 碰撞攻击(SHAttered),证明 SHA-1 已被实际破解。尽管如此,SHA-1 仍在某些遗留系统中使用,如 Git(正在迁移到 SHA-256)。
使用步骤
SHA-1 是单向哈希函数,只能计算哈希值,无法反向解密:
安全性问题
SHA-1 存在严重的安全性问题,已被证明不安全:
仍在使用 SHA-1 的场景
尽管 SHA-1 不安全,但某些遗留系统仍在使用:
替代方案
应使用更安全的哈希算法替代 SHA-1:
常见问题
Q: SHA-1 和 MD5 哪个更安全?
A: 两者都不安全,但 SHA-1 比 MD5 稍好一些。MD5:1)128 位输出。2)2004 年被破解,碰撞复杂度 2^39。3)碰撞攻击可在普通计算机上数小时内完成。SHA-1:1)160 位输出。2)2017 年被破解,碰撞复杂度约 2^63。3)碰撞攻击需要大量计算资源,但已被实际演示。结论:两者都不应用于安全场景,应使用 SHA-256 或更高级别的算法。
Q: Git 为什么还在使用 SHA-1?
A: Git 使用 SHA-1 标识提交、树和对象,但这是历史遗留问题。历史原因:Git 于 2005 年创建时,SHA-1 被认为是安全的。兼容性:更改哈希算法会破坏所有现有仓库的兼容性。风险评估:Git 的使用场景(版本控制)与 SSL 证书不同,碰撞攻击的风险相对较低。迁移计划:Git 正在迁移到 SHA-256(Git 2.29+ 支持),但需要时间完成过渡。缓解措施:Git 实现了碰撞检测机制,可以检测 SHAttered 类型的攻击。建议:新仓库应使用 SHA-256,旧仓库可以继续使用 SHA-1(但需注意风险)。
Q: SHA-1 可以用于密码存储吗?
A: 绝对不可以。SHA-1 不仅存在碰撞漏洞,而且不适合密码存储。问题:1)速度太快:GPU 可以每秒计算数十亿次 SHA-1,容易被暴力破解。2)碰撞漏洞:攻击者可能利用碰撞生成相同哈希值的不同密码。3)无盐值:单独使用 SHA-1 无法防御彩虹表攻击。正确做法:使用专门的密码哈希算法:1)Argon2(OWASP 推荐)。2)bcrypt(cost factor ≥ 12)。3)PBKDF2-SHA256(≥ 600k 迭代)。
Q: SHAttered 攻击是什么?
A: SHAttered 是 Google 于 2017 年演示的 SHA-1 碰撞攻击,证明 SHA-1 已被实际破解。攻击原理:生成两个不同的 PDF 文件,但具有相同的 SHA-1 哈希值。计算成本:约 6500 年的 CPU 计算时间和 110 年的 GPU 计算时间(分布式计算)。影响:1)证明 SHA-1 碰撞攻击可行。2)攻击成本随时间降低,未来可能更容易。3)主流浏览器停止信任 SHA-1 证书。示例:Google 发布了两个不同的 PDF 文件,但具有相同的 SHA-1 哈希值(shattered.io)。
Q: 如何从 SHA-1 迁移到 SHA-256?
A: 迁移到 SHA-256 需要评估影响和制定迁移计划。评估影响:1)识别所有使用 SHA-1 的系统和组件。2)评估迁移的兼容性和成本。3)确定迁移优先级(安全敏感场景优先)。迁移策略:1)双哈希:同时计算 SHA-1 和 SHA-256,逐步过渡。2)版本标识:在数据中标识使用的哈希算法。3)分阶段迁移:先迁移新数据,再迁移旧数据。Git 迁移:使用 git config --global init.defaultBranch main 和 git config --global extensions.objectFormat sha256 创建 SHA-256 仓库。
Q: SHA-1 还有什么用途?
A: SHA-1 仅适用于非安全场景,且应尽快迁移到更安全的算法。可接受的用途:1)文件去重:在不涉及安全的场景下识别重复文件(但 SHA-256 更好)。2)校验和:检测意外的数据损坏(非恶意篡改)。3)遗留系统兼容:维护无法升级的旧系统(临时方案)。不可接受的用途:1)数字签名。2)SSL/TLS 证书。3)代码签名。4)密码存储。5)任何安全敏感场景。建议:即使在非安全场景,也应优先使用 SHA-256,因为性能差异很小,但安全性大幅提升。
使用场景
不推荐:SSL/TLS 证书
SHA-1 证书已被主流浏览器弃用,不应再使用。2017 年起,Chrome、Firefox、Edge 等浏览器停止信任 SHA-1 证书,访问使用 SHA-1 证书的网站会显示安全警告。CA 机构也已停止签发 SHA-1 证书。所有网站应使用 SHA-256 或更高级别的证书。
- ❌ 不推荐:SHA-1 证书(已弃用)
- ✅ 推荐:SHA-256 证书(行业标准)
- ✅ 推荐:SHA-384/SHA-512 证书(更高安全性)
- 💡 使用 Let's Encrypt 免费获取 SHA-256 证书
不推荐:数字签名
SHA-1 数字签名存在碰撞风险,攻击者可能伪造签名。代码签名、文档签名、软件发布等场景不应使用 SHA-1。微软、Apple 等公司已停止接受 SHA-1 签名的软件。所有数字签名应使用 SHA-256 或更高级别的算法。
- ❌ 不推荐:SHA-1 签名(不安全)
- ✅ 推荐:SHA-256 签名(行业标准)
- ✅ 推荐:EdDSA(现代签名算法)
- 💡 使用代码签名证书(SHA-256)
有限使用:Git 版本控制
Git 仍在使用 SHA-1,但正在迁移到 SHA-256。对于现有仓库,可以继续使用 SHA-1(Git 有碰撞检测机制)。对于新仓库,推荐使用 SHA-256。Git 2.29+ 支持 SHA-256,但需要注意兼容性问题(旧版 Git 无法读取 SHA-256 仓库)。
- ✅ 新仓库:使用 SHA-256(Git 2.29+)
- ⚠️ 旧仓库:可继续使用 SHA-1(有风险)
- ✅ 启用 Git 碰撞检测
- 💡 计划迁移到 SHA-256
有限使用:文件校验和(非安全)
SHA-1 可用于检测意外的数据损坏(如传输错误),但不能防御恶意篡改。如果只是检测意外错误(非安全场景),SHA-1 仍然可用。但对于安全敏感场景(如软件下载、文件完整性验证),应使用 SHA-256。
- ⚠️ 可用:检测意外数据损坏(非安全)
- ❌ 不可用:防御恶意篡改(安全场景)
- ✅ 推荐:使用 SHA-256 替代
- 💡 SHA-256 性能差异很小,但安全性大幅提升
不推荐:密码存储
不推荐:区块链和加密货币
安全警告
- SHA-1 已被证明存在碰撞漏洞,不应用于任何安全敏感场景。
- 主流浏览器已停止信任 SHA-1 SSL 证书,使用 SHA-1 证书的网站会显示安全警告。
- 新项目必须使用 SHA-256 或更高级别的算法,不要使用 SHA-1。
- 即使在非安全场景,也应优先使用 SHA-256,因为性能差异很小,但安全性大幅提升。
- 如果必须使用 SHA-1(如兼容遗留系统),应尽快制定迁移计划。
- Git 正在从 SHA-1 迁移到 SHA-256,新仓库应使用 SHA-256。