SHA-256 在线加密(计算)

输入文本或选择文件,立即得到 SHA-256 值,同时支持 SHA-1、SHA-384、SHA-512。可以粘贴官方给出的哈希自动比对,确认文件没被改过。所有计算均在浏览器本地完成,不上传任何数据。
文本输入
文件上传
拖拽文件到此处,或点击选择文件

支持任意文件,最大 50 MB

算法
校验比对
说明:
1. 文本输入与文件上传二选一,文件上传优先。
2. 文本为空时自动使用当前时间戳作为输入。
3. 文件大小限制 50 MB,超过则提示错误。
4. 校验比对栏可以直接粘贴 sha256sum 那种「哈希 + 空格 + 文件名」的整行,会自动只取哈希部分。
5. SHA 是单向散列算法(中文习惯称"加密"),无法解密。

关于 SHA-256 与 MD5 的选择

SHA 算「加密」吗?

和 MD5 一样,严格说不算。加密是可逆的,有密钥就能还原原文;SHA 是单向散列函数,把任意长度的输入压成固定长度的摘要,过程中信息已经丢失,不存在「还原」这一步。中文习惯把它叫「SHA256 加密」,本页沿用这个说法,指的是计算 SHA-256 值。所以也不存在「SHA256 解密」——那类网站做的是彩虹表反查,原理在 MD5 在线加密 页里写得更细。

为什么该从 MD5 和 SHA-1 换过来

不是「位数更长所以更安全」这么简单,而是前两个已经被实际攻破了。构造两个 MD5 相同但内容不同的文件,普通电脑几秒钟就能做到;SHA-1 在 2017 年被 Google 的 SHAttered 实际碰撞,2020 年更进一步做到了选择前缀碰撞,成本降到几万美元。这意味着有人可以准备一对内容不同、哈希却相同的文件,让你校验通过却拿到另一份。SHA-256 目前没有已知的实用碰撞方法,也是 TLS 证书、新版本 Git、软件发布校验普遍采用的算法。

但存密码不要直接用 SHA-256

这是最常见的误用。SHA-256 的设计目标是——现代显卡每秒能算几十亿次,正好方便攻击者暴力穷举。存储用户密码要用 bcrypt、scrypt 或 Argon2 这类慢哈希:它们内置加盐(每个用户一个随机盐,防止彩虹表和撞库),并且可以调节计算成本,硬件变快就把成本调高。给 SHA-256 手工加盐能挡住彩虹表,但挡不住针对单个账号的暴力破解。

SHA-256、SHA-384 和 SHA-512 怎么选

三个都属于 SHA-2 家族,区别是内部字长和输出长度。SHA-256 用 32 位运算,兼容性最好,是绝大多数场景的默认选择。SHA-512 用 64 位运算,在 64 位 CPU 上往往反而更快,输出也更长。SHA-384 是 SHA-512 截断到 384 位的版本,常见于部分证书和 TLS 套件。没有特殊要求就用 SHA-256——你要比对的那个值多半也是它。

常见问题

SHA-256 可以解密吗?

不能,它在设计上就不可逆。声称能「SHA256 解密」的网站做的是彩虹表反查:事先把海量常见字符串算好存进库里,你给一个哈希,它去查有没有对应记录。查得到只说明你的原文是个常见字符串;随机长口令或加盐之后的口令,任何这类站点都查不出来。

SHA-256 和 MD5 该用哪个?

涉及安全一律用 SHA-256,MD5 和 SHA-1 都已被实际碰撞,不能再用来防篡改或做签名。只有在对方明确要求 MD5 时才用它——比如老系统给出的校验值就是 MD5。需要算 MD5 可以用本站的 MD5 在线加密,那一页写了「MD5 解密」网站的真实原理。

SHA-1 现在还能用吗?

不能用于任何安全用途。它 2017 年就被实际碰撞,浏览器和证书机构早已全面弃用。这里仍然保留 SHA-1,是因为还有不少老系统、老仓库和旧文档给出的校验值是 SHA-1,你需要一个能算出来对照的工具,而不是因为它还安全。

怎么校验下载的文件有没有被改过?

把文件拖进上面的上传框,在「校验比对」栏粘贴发布方给出的哈希值,点计算。一致会显示绿色提示,不一致显示红色。如果你粘贴的哈希长度对不上当前算法,页面会提示你可能该换哪一个——官方给的是 SHA-1 而你选了 SHA-256,是最常见的一种对不上。

算出来的值和别的网站不一样,是谁算错了?

多半两边都没错,是输入不同。最常见的三个原因:文本末尾多了一个换行;换行符是 \r\n 还是 \n(Windows 记事本和 Linux 不一样);以及非 ASCII 字符的编码不是 UTF-8。本页对文本按 UTF-8 编码、不额外补换行。要排除这类差异,最稳的办法是直接算文件而不是粘贴文本。

为什么文件大小限制 50 MB?

浏览器的 WebCrypto 接口只能对一整块数据做摘要,没有提供分段流式计算的接口,所以文件要先整个读进内存。50 MB 是一个在手机上也不至于卡住的上限。更大的文件建议用系统自带的命令行工具:Windows 用 certutil -hashfile 文件名 SHA256,macOS 和 Linux 用 shasum -a 256 文件名

大写和小写的哈希值有区别吗?

没有区别,只是同一串十六进制的两种写法,比对时不区分大小写。本页默认输出小写(也是 sha256sumshasum 这些命令行工具的习惯),勾选后可以切成大写。校验比对时会自动忽略大小写差异,不用手工统一。

我的文件会被传到服务器吗?

不会。计算用的是浏览器内置的 WebCrypto 接口,文件读进内存、算完直接显示,全程没有一个字节离开你的设备。页面加载完之后断开网络,这个工具照常可用——这是最直接的验证方法。详见隐私政策