SHA1哈希校验

输入
0 字符 / 0 字节
SHA-1 已于 2017 年被 Google 与 CWI 的 SHAttered 攻击实际构造出碰撞,不再适合数字签名、证书等安全用途。目前仅建议用于旧系统兼容、文件完整性校验等非对抗性场景。新项目请改用 SHA-256 或 SHA-512。
计算结果
输入文本或选择文件后自动计算 SHA-1 哈希
在线计算文本与文件的 SHA-1 哈希值,支持拖拽大文件分块计算、十六进制/大写/Base64/分段多种格式,并可粘贴已有 SHA1 值自动校验比对。全部在本机浏览器完成,文件不上传服务器。

这个工具能做什么

SHA-1 在线哈希与校验工具,覆盖三种用法:

  1. 文本哈希:输入或粘贴文本,右侧实时输出 SHA-1 值(160 位,即 40 位十六进制)。
  2. 文件哈希:切到「文件」标签,点击选择或拖入文件,工具按 4 MB 分块读取并显示进度。
  3. 校验比对:粘贴已知 SHA-1 值,工具忽略大小写、空格与分隔符自动比对,并指出首个不同字符的位置。

全部计算在浏览器本机完成,文本与文件都不会上传到服务器。

使用步骤

  1. 选择「文本」或「文件」模式。
  2. 文本模式输入即算;文件模式选择文件后自动分块计算并显示进度。
  3. 点击哈希值本身或右上角「复制」按钮即可复制。
  4. 需要核对时把待比对的值粘贴进「校验比对」框。

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 已经不适合做安全用途

  • 理论警告:2005 年王小云团队给出 SHA-1 碰撞攻击的理论复杂度约 2^69,远低于理想值 2^80。
  • 实际攻破*:2017 年 2 月,Google 与 CWI 阿姆斯特丹联合发布 *SHAttered 攻击,构造出两个内容不同但 SHA-1 相同的 PDF 文件,并公开了「 shattered.io 」碰撞样例。这是第一次公开的实际 SHA-1 碰撞。
  • 行业动作:主流浏览器从 2017 年起对 SHA-1 证书显示不安全警告,CA/Browser Forum 要求 2016 年起停止签发 SHA-1 证书;Git 也在推进从 SHA-1 迁移到 SHA-256。

因此:SHA-1 不能用于数字签名、证书、防篡改校验等对抗性场景,也不能用于口令存储(速度太快)。它目前仅适合旧系统兼容、非对抗性的文件完整性校验。

SHA-1 仍然广泛存在的地方

场景说明
Git 对象 IDGit 用 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 个大写字符,部分旧工具的输出风格
Base6420 字节摘要的 Base64,28 个字符含填充
分段(每 8 位)便于人工核对的分组显示

常见误区

  • SHA-1 比 MD5 长就更安全。输出更长不代表能抵抗碰撞。SHA-1 的碰撞已被实际构造,在对抗性场景下的可信度与 MD5 同属「已破」级别。
  • 哈希值一样就说明文件一样。只能说明「在未被攻破的假设下字节一致」。对已被攻破的算法,攻击者可以构造出哈希相同但内容不同的文件。
  • SHA-1 是加密。它是单向摘要,不可逆,也不能用来还原原文。
  • HMAC-SHA1 和 SHA-1 是一回事。HMAC 引入了密钥,能抵抗长度扩展攻击,安全性高于裸 SHA-1,但新系统仍建议使用 HMAC-SHA256。

常见问题 FAQ

SHA-1 和 SHA-256 该选哪个?

新项目一律选 SHA-256 或 SHA-512。只有在对接只支持 SHA-1 的旧系统(例如某些历史代码签名、老版本 API)时才使用 SHA-1,并且应把它当作兼容手段而非安全措施。

SHA-1 是加密算法吗?能解密吗?

不是加密,是单向哈希摘要,数学上不可逆。网上所谓「SHA-1 解密」是用预先算好的常见口令表反查,只能命中弱口令,不是真正还原原文。

SHA-1 的输出为什么是 40 个字符?

SHA-1 摘要为 160 位,即 20 字节;每个字节用两位十六进制表示,所以是 40 个字符。SHA-256 是 64 个字符,SHA-512 是 128 个字符。

为什么同一文本的 SHA-1 和别人不一样?

通常是编码或换行差异:UTF-8 与 GBK 对中文产生的字节序列不同,Windows 的 CRLF 与 Unix 的 LF 也是不同字节。请确认双方使用相同编码与换行符。

多大的文件可以计算?

没有硬性上限,工具按 4 MB 分块顺序读取,内存占用恒定,过程中显示进度条。几百 MB 到几个 GB 的文件通常都能正常完成。

文件不会上传到服务器吧?

不会。全部计算通过浏览器本地的 WebAssembly 完成,文件只在本机读取,不产生任何上传请求,可以在开发者工具的 Network 面板确认。

SHA-1 和 HMAC-SHA1 有什么区别?

HMAC-SHA1 是在 SHA-1 外层套了带密钥的 HMAC 结构,能抵抗长度扩展攻击,碰撞攻击也不能直接套用。安全性高于裸 SHA-1,但新系统仍建议直接使用 HMAC-SHA256。

为什么 SHA-1 不能用来存密码?

SHA-1 计算速度极快,且没有内置盐值与代价因子,用显卡可以每秒尝试数十亿次。口令存储应使用专门设计的慢哈希:Bcrypt、Argon2 或 PBKDF2。

Git 还在用 SHA-1 吗?

是的,Git 的对象 ID(blob / tree / commit)目前仍是 SHA-1,这也是 SHA-1 最广泛的现存用途。Git 社区正在推进迁移到 SHA-256,新版本已支持 SHA-256 仓库格式。

SHAttered 攻击是什么?

2017 年 2 月,Google 与荷兰 CWI 研究所联合公布的一次实际 SHA-1 碰撞:他们生成了两份内容不同、SHA-1 值完全相同的 PDF 文件,并公开了碰撞样例(shattered.io)。这是 SHA-1 首次被公开实际攻破。

SHA-1 还能用吗?

不建议用于安全场景。2017 年 Google 与 CWI 发布的 SHAttered 攻击已实际构造出两个不同内容但 SHA-1 相同的 PDF,碰撞不再是理论问题。它目前只适合旧系统兼容和非对抗性的文件完整性校验。

SHA-1 是什么?

SHA-1 是 NSA 设计、NIST 于 1995 年发布(FIPS PUB 180-1)的安全散列算法,输出 160 位(40 位十六进制)摘要。它是 SHA-0 的修正版本,采用 Merkle–Damgård 迭代结构。