Toolkitbar

SHA-256 哈希生成 — 免费,在浏览器内运行

用 SHA-256 和它的三个亲戚给字符串算个指纹。

选项

在你的设备上运行 你粘贴的内容由你自己的浏览器处理,不会发送到任何服务器,离开页面后也不会留在任何地方。

一句话答案

任意文本的 SHA-256、SHA-1、SHA-384 或 SHA-512 哈希都可以在浏览器里免费计算。文本先按 UTF-8 编码,再交给浏览器自带的 Web Crypto 实现 —— 也就是 TLS 所使用的那套经过审计的代码 —— 摘要以十六进制显示,大小写可选。计算在设备上完成,所以被哈希的文本不会被传输出去。

一览

支持输入任意文本
输出格式十六进制摘要
处理方式浏览器本地
价格免费,无次数限制
账号无需注册

哈希是一种单向指纹:同样的输入永远得到同样的摘要,而摘要无法还原成输入。这让它适合用来在不暴露任何一方的前提下比较两样东西、核对下载文件是否与发布方给出的校验值一致,以及判断某个文件或字符串有没有被改动过。

SHA-256 是合理的默认值,除非有明确要求,否则就用它。这里保留 SHA-1 是因为不少既有系统仍在产出它(Git 的对象 id 就是其一),但它自 2017 年起已被实际演示出碰撞攻击,任何“两个不同输入绝不能碰撞”的新设计都不该再选它。

使用步骤

  1. 1

    粘贴文本

    要比对的口令、要留指纹的字符串、要校验的一段消息都行。

  2. 2

    选择算法

    没有特别要求就选 SHA-256。只有为了兼容某个已经在用 SHA-1 的系统时才选 SHA-1。

  3. 3

    点击转换

    十六进制摘要显示在下方,由浏览器自带的加密实现计算得出。

  4. 4

    复制摘要

    复制到剪贴板,或者下载成文本文件。

常见问题

我的文本会被发出去计算吗?

不会。Web Crypto API 内建于你的浏览器,摘要在你的设备上算出,输入和结果都不会被传输。

哈希能被反推回去吗?

不能直接反推 —— 这正是它之所以是哈希的原因。但很短或很常见的输入可以靠不断尝试候选值撞出来,所以直接存一个密码的裸哈希并不算密码存储。那种场景要用 bcrypt 或 Argon2 这类专门的算法。

为什么没有 MD5?

因为浏览器的加密实现里根本没有它,提供 MD5 就意味着额外塞进一份实现 —— 而这个函数从 2004 年起就已经被攻破了。任何要核对现代校验值的场合,要的是 SHA-256。

现在还该用 SHA-1 吗?

只在既有系统硬性要求时用。针对 SHA-1 的实际碰撞攻击自 2017 年起已经公开,新东西不该再依赖它来保证完整性或做签名。

工具说我的浏览器跑不了,为什么?

Web Crypto API 只在安全连接下才会被暴露。在普通 http 下,或者在某些经过加固或非常老旧的浏览器上,它根本不存在,哈希也就无法计算。

相关工具

浏览全部开发者工具