哈希生成器与校验和验证工具
一次性获取任意文本或文件的 MD5、SHA-1、SHA-256、SHA-384 和 SHA-512,用密钥计算 HMAC,并对照官方发布的校验和检查文件。
在浏览器中运行无需注册不上传任何数据
如何使用哈希生成器
- 输入或粘贴文本,或者切换到文件并拖入文件。大文件会分块读取并显示进度条。
- 五种哈希会同时计算。可选择小写十六进制、大写十六进制或 Base64 输出。
- 勾选HMAC并输入密钥(文本、十六进制或 Base64),即可得到带密钥的 HMAC-SHA256 及其他 HMAC 变体。
- 要校验下载文件,把官方发布的校验和粘贴到校验校验和中,匹配的算法会被高亮显示。
什么是哈希?
密码学哈希函数可以把任意输入变成固定长度的“指纹”。相同的输入总是得到相同的哈希,改动一个字节就会得到完全不同的结果,而且无法从哈希反推出原始输入。因此,哈希非常适合用来检查文件完整性、构建缓存键、数据去重以及对消息签名。
应该使用哪种算法?
| 算法 | 输出 | 适用场景 |
|---|---|---|
| MD5 | 128 位 · 32 个十六进制字符 | 仅用于旧式校验和以及与安全无关的缓存键。很容易构造碰撞。 |
| SHA-1 | 160 位 · 40 个十六进制字符 | Git 对象 ID 和旧系统。自 2017 年起其抗碰撞性已被攻破。 |
| SHA-256 | 256 位 · 64 个十六进制字符 | 默认选择:下载校验和、签名、区块链、API 请求签名。 |
| SHA-384 / SHA-512 | 384 / 512 位 | 更高的安全余量;在 64 位 CPU 上 SHA-512 往往比 SHA-256 更快。 |
不要用以上任何算法来存储密码。它们被设计得很快,这反而有利于攻击者。请改用 Argon2id、scrypt 或 bcrypt 等慢速密码哈希算法。
校验文件的校验和
软件厂商通常会在每个下载链接旁发布 SHA-256 值。把文件拖到这里,粘贴官方发布的值,工具就会告诉你两者是否一致。你可以直接粘贴 SHA256SUMS 文件中的整行内容,哈希后面的文件名会被忽略。等效的命令:
sha256sum file.iso # Linux
shasum -a 256 file.iso # macOS
certutil -hashfile file.iso SHA256 # Windows
什么是 HMAC?
HMAC(RFC 2104)把密钥混入哈希计算中,因此只有持有密钥的人才能生成或校验该值。Stripe、GitHub 和 Slack 的 Webhook 都使用 HMAC-SHA256 签名,使用 HS256 算法的 JWT 也是如此。调试时,粘贴原始请求体和你的签名密钥,即可复现签名。
常见问题
计算哈希时会上传我的文件吗?
不会。文本和文件都通过浏览器的 Web Crypto API(以及内置的 MD5 实现)在本地计算哈希,任何数据都不会离开你的设备。
为什么我的哈希值和其他工具算出来的不一样?
通常是输入不同:末尾多了换行符、Windows 换行符(CRLF 与 LF)或不同的文本编码。本工具按 UTF-8 对你输入的文本原样计算哈希,不会额外添加换行。注意
echo "text" | sha256sum 会包含一个换行符,请使用 echo -n。哈希可以解密吗?
不可以。哈希是单向的。那些号称能“解密” MD5 或 SHA-1 的网站,只是在常见输入的哈希表中查找该值;这也是为什么较短或常见的字符串在没有密钥的情况下做哈希并不安全。
SHA-256 和 SHA-2 是一回事吗?
SHA-256 是 SHA-2 家族的一员,该家族还包括 SHA-224、SHA-384 和 SHA-512。SHA-3 则是另一种更新的设计。
最多可以计算多大文件的哈希?
最大 2 GB,受浏览器内存限制。文件按 4 MB 分块读取并显示进度条,页面始终保持响应。