跳转到正文

哈希生成器(SHA-256)

输入或粘贴文本,一键计算其 SHA-256、SHA-1、SHA-384 和 SHA-512 哈希值,并以小写或大写十六进制显示,每个结果旁都有复制按钮。计算通过您浏览器的 Web Crypto API 对文本的 UTF-8 字节进行,因此不会上传任何内容。免费,无需注册。本工具只对文本进行哈希,不支持文件。

如何使用哈希生成器

  1. 1. 输入您的文本。 任意文本,长度以浏览器文本框能够容纳的范围为限。
  2. 2. 点击“生成哈希值”。 四种摘要会同时显示,其中 SHA-256 标为推荐算法。
  3. 3. 选择大小写。 大写十六进制会在小写(通常的惯例)与大写之间切换每个摘要;底层字节完全相同。
  4. 4. 点击旁边的按钮复制所需的摘要。

四种算法

SHA-1、SHA-256、SHA-384 和 SHA-512 定义于美国政府的《安全哈希标准》,即 FIPS 180-4。每种算法都会把任意输入转换为固定长度的摘要。输出中唯一可见的区别是长度:

算法摘要长度十六进制字符数状态
SHA-1160 位40安全性已被攻破:首个实际碰撞于 2017 年公布,NIST 要求在 2030 年前逐步淘汰。仅用于旧版校验和。
SHA-256256 位64完整性校验和签名的标准选择
SHA-384384 位96SHA-2 家族;即截断的 SHA-512
SHA-512512 位128SHA-2 家族;在 64 位处理器上通常比 SHA-256 更快

加密哈希是一种单向指纹。相同的输入总是得到相同的摘要,微小的改动会得到毫不相关的摘要,并且无法从摘要还原出文本。Web Crypto API 未实现 MD5,因此本工具不提供 MD5。

示例

文本

abc

SHA-256

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

SHA-1

a9993e364706816aba3e25717850c26c9cd0d89d

这两个结果是标准示例中公布的测试向量,您可以用可信的来源来核对本工具。现在看看改动一个字母会发生什么:将 The quick brown fox jumps over the lazy dog 中的“dog”改为“cog”。

…dog

d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

…cog

e4c4d8f3bf76b692de791a173e05321150f7a345b46484fe427f6acc7ecc81be

这两个 SHA-256 摘要毫无可辨认的相似之处:256 位中有 123 位不同,接近无关数值所预期的一半。这就是雪崩效应,它使哈希能够证明文件或消息已经改变,却不会透露改动的内容。

为什么您的哈希值可能不匹配

  • 末尾换行符。 abc 与后面跟着换行符的 abc 是不同的输入:abc 加上换行符后的 SHA-256 以 edeaaff3 开头,而不是 ba7816bf。命令 echo abc | sha256sum 也会对换行符进行哈希;若要去掉它,请使用 printf 或 echo -n。
  • 大小写与空格。 Abc 与 abc 的哈希值不同,首尾的空格同样会得到不同的结果。
  • 编码。 本工具对您输入内容的 UTF-8 字节进行哈希。在其他地方以 UTF-16 或 Latin-1 编码的文本,对于任何非 ASCII 字符都会得到不同的摘要。
  • 换行符格式。 从 Windows 文件粘贴的文本可能含有回车符,文本框可能会将其规范化掉。

本工具不适用于的场景

  • 文件。 本工具只对文本进行哈希。对于文件,在 macOS 或 Linux 上使用 shasum -a 256 file,在 Windows 上使用 certutil -hashfile file SHA256。
  • 密码。 SHA-256 的设计目标是快速,这反而会帮助攻击者猜测密码。存储密码时,请使用慢速且加盐的密码哈希函数,例如 Argon2id、scrypt 或 bcrypt。
  • 带密钥的哈希。 本工具没有 HMAC 或盐值选项。

您需要哪个工具?

若想查看文本本身的十六进制形式而非其摘要,请使用十六进制转换工具。随机标识符请用 UUID 生成器;随机密钥请用 密码生成器。

常见问题

我的文本会被上传到服务器吗?
不会。每个摘要都在您的浏览器中通过 Web Crypto API(crypto.subtle.digest)计算。您的文本不会被发送到任何地方,页面加载后即使离线,本工具仍可继续使用。
什么是加密哈希?
一种将任意长度的输入转换为固定长度摘要的函数。它是确定性的、单向的,并且对输入的每一位都敏感。哈希被用于检验文件完整性、数字签名以及提交标识符等场合。
我应该使用哪种哈希算法?
几乎所有场合都使用 SHA-256。SHA-384 和 SHA-512 是同一家族中摘要更长的算法。只有在旧系统必须使用时才用 SHA-1,且切勿用于安全用途。
SHA-1 安全吗?
在安全用途上不安全。2017 年的 SHAttered 攻击制造出两个不同的 PDF 文件,它们具有相同的 SHA-1 摘要;NIST 要求在 2030 年底前逐步淘汰它。在攻击者不构成威胁的非安全校验和场景中,它仍可接受。
为什么没有 MD5 选项?
Web Crypto API 未实现 MD5,而本工具只使用浏览器提供的算法。多年来,MD5 已不适用于安全用途。
我可以用本工具对文件进行哈希吗?
不可以,它只接受文本。对于文件,请使用您操作系统的命令行工具,如上文所述。
为什么我的 SHA-256 与其他网站的结果不同?
几乎总是因为输入中含有不可见字符,例如末尾的换行符或空格,或者文本编码不同。可用十六进制转换工具检查确切的字节。

相关工具

数据、标记语言与代码中的更多工具