哈希生成器(SHA-256)
输入或粘贴文本,一键计算其 SHA-256、SHA-1、SHA-384 和 SHA-512 哈希值,并以小写或大写十六进制显示,每个结果旁都有复制按钮。计算通过您浏览器的 Web Crypto API 对文本的 UTF-8 字节进行,因此不会上传任何内容。免费,无需注册。本工具只对文本进行哈希,不支持文件。
如何使用哈希生成器
- 1. 输入您的文本。 任意文本,长度以浏览器文本框能够容纳的范围为限。
- 2. 点击“生成哈希值”。 四种摘要会同时显示,其中 SHA-256 标为推荐算法。
- 3. 选择大小写。 大写十六进制会在小写(通常的惯例)与大写之间切换每个摘要;底层字节完全相同。
- 4. 点击旁边的按钮复制所需的摘要。
四种算法
SHA-1、SHA-256、SHA-384 和 SHA-512 定义于美国政府的《安全哈希标准》,即 FIPS 180-4。每种算法都会把任意输入转换为固定长度的摘要。输出中唯一可见的区别是长度:
| 算法 | 摘要长度 | 十六进制字符数 | 状态 |
|---|---|---|---|
| SHA-1 | 160 位 | 40 | 安全性已被攻破:首个实际碰撞于 2017 年公布,NIST 要求在 2030 年前逐步淘汰。仅用于旧版校验和。 |
| SHA-256 | 256 位 | 64 | 完整性校验和签名的标准选择 |
| SHA-384 | 384 位 | 96 | SHA-2 家族;即截断的 SHA-512 |
| SHA-512 | 512 位 | 128 | SHA-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 与其他网站的结果不同?
- 几乎总是因为输入中含有不可见字符,例如末尾的换行符或空格,或者文本编码不同。可用十六进制转换工具检查确切的字节。