哈希生成器 — MD5、SHA-1、SHA-256、SHA-512、CRC32 和 HMAC
用 MD5、SHA-1、SHA-256、SHA-384、SHA-512 和 CRC32 计算文本或文件的哈希值,校验校验和,或计算 HMAC。文件绝不离开你的设备。
| MD5 | … | |
|---|---|---|
| SHA-1 | … | |
| SHA-256 | … | |
| SHA-512 | … | |
| CRC32 | … |
文本和文件都在你的浏览器中计算哈希;文件从磁盘分块读取,绝不上传。 浏览全部免费工具.
发现问题,或者觉得哪里可以更好?每条消息我们都会阅读,并尽快修复。
这款哈希生成器可在浏览器中一次性为文本或文件计算 MD5、SHA-1、SHA-256、SHA-384、SHA-512 和 CRC32 校验和。你可以用它检查下载的文件是否与发布方网站上的校验和一致,为锁定文件或子资源完整性(SRI)属性获取 SHA-256,或在调试 Webhook 时计算 HMAC 签名。文本按 UTF-8 字节计算哈希,与 sha256sum、OpenSSL 以及各编程语言的标准库一致。一次拖入多个文件,即可得到所有文件的校验和表格,外加一个可用 sha256sum -c 校验的 sha256sum 兼容文件;或者勾选“逐行分别计算哈希”,一次性为整个字符串列表计算哈希。
文件以 4 MB 为单位分片从磁盘读取,交给流式哈希函数处理,因此即使是数 GB 的 ISO 也无需载入内存即可校验,而且一个字节都不会上传。处理过程会显示进度,也可以取消。有一个实实在在的限制:在浏览器标签页中计算哈希比原生工具慢,所以对于 50 GB 的磁盘镜像,在命令行中使用 sha256sum 或 certutil 会更快。
使用方法
- 在顶部选择“文本”“文件”或“HMAC”。
- 处理文本时,输入或粘贴即可,哈希值会随输入实时更新。处理文件时,把它拖到方框中或点击选择。
- 在计算大文件的哈希之前,取消勾选不需要的算法;每多一种算法都会增加耗时。
- 把发布方提供的校验和粘贴到“与期望的校验和比较”中,即可清楚地看到匹配或不匹配。
- 如果你要对比的系统使用 Base64 或大写十六进制,请切换输出格式,然后复制。
- 处理多个文件时,一起选择或拖入:它们会被依次计算,你可以下载 sha256sum 格式的 .txt,或包含所有校验和的 CSV。
常见问题
可以一次计算多个文件的校验和吗?
可以。在“文件”标签页中一次选择或拖入最多 500 个文件。它们会按你勾选的算法依次计算,每个文件都以 4 MB 分块读取,内存占用保持在较低水平;无法读取的文件会被标记为失败,不影响其余文件。结果可下载为 GNU coreutils 格式的 .txt(与 sha256sum、md5sum 或 sha512sum 的输出相同,可用 sha256sum -c 校验),或包含所有算法的 CSV。你也可以粘贴现有的 SHA256SUMS 列表,逐个校验文件。
可以按行为字符串列表计算哈希吗?
可以。在“文本”标签页中勾选“逐行分别计算哈希”。每一行会单独按 UTF-8 计算哈希(不含换行符),最多 5,000 行,结果表格可复制为制表符分隔的文本,或下载为 CSV。
MD5、SHA-1 和 SHA-256 有什么区别?
它们是输出长度和安全性各不相同的哈希函数。MD5 输出 128 位,SHA-1 输出 160 位;两者在安全用途上都已被攻破,因为研究人员能构造出哈希值相同的两个不同输入(MD5 自 2004 年起,SHA-1 自 2017 年 SHAttered 攻击公开起)。SHA-256 输出 256 位,目前没有已知的实用攻击。凡是与安全相关的场景都应使用 SHA-256 或 SHA-512;MD5 和 SHA-1 仍可用于发现意外损坏。
如何校验文件的校验和?
打开“文件”标签页,拖入下载的文件,再把下载页面上的校验和粘贴到比较字段中。匹配就说明你手中的文件与发布方计算哈希的文件逐字节完全相同。注意要同类比较:SHA-256 校验和是 64 个十六进制字符,SHA-1 是 40 个,MD5 是 32 个。要真正可靠,请通过 HTTPS 从官方网站获取校验和,而不是从提供文件的同一个镜像获取。
哈希值可以逆向或解密吗?
不能。哈希是单向函数:没有密钥,也没有可解密的东西。所谓的“MD5 解密”网站,实际上是在预先计算好的常见字符串哈希表中查找。这就是为什么简短或常见密码的哈希很容易被查到,也是为什么密码必须用 bcrypt 或 Argon2 这类慢速加盐算法存储,而绝不能用普通的 SHA-256。
为什么我的哈希值与代码算出的不一致?
输入的字节不同,而且通常肉眼看不出来。常见原因有:末尾多了换行符(echo 会自动添加;请用 echo -n)、Windows 的 CRLF 换行而不是 LF、文本编码不是 UTF-8、开头或结尾有空格,或者拿十六进制摘要和 Base64 摘要作比较。哪怕只差一个字节,哈希值也会完全不同,所以请检查文本框下方显示的字节数。
HMAC 是什么?什么时候需要它?
HMAC(RFC 2104)把密钥与哈希函数结合起来,生成只有持有密钥的人才能创建的签名。Stripe、GitHub 和 Shopify 等 Webhook 提供方会用 HMAC-SHA256 对其负载签名,以便你验证请求确实来自它们。不要自己用 sha256(key + message) 来实现:对于 SHA-256,这种构造容易受到长度扩展攻击,而 HMAC 正是为防范这种攻击而设计的。
CRC32 是哈希吗?
它是校验和,而不是密码学哈希。CRC32 速度极快,擅长检测意外错误(例如传输中翻转了一个比特),所以 ZIP、gzip、PNG 和以太网都在使用它。它很容易被蓄意伪造,因此绝不能用它来证明文件未被篡改。
不同用途该用哪种哈希
• 对照发布方的校验和校验下载文件:用他们公布的那种算法,通常是 SHA-256。
• 安全相关场景的完整性校验(子资源完整性、软件包锁定文件、代码签名、证书):SHA-256 或 SHA-384。SRI 属性使用 Base64,这也是提供输出格式切换的原因。
• 用共享密钥为 API 请求或 Webhook 签名:HMAC-SHA256。
• 存储密码:以上都不行。请使用 bcrypt、scrypt 或 Argon2id,它们刻意设计得很慢并且加盐。快速哈希能让攻击者借助 GPU 每秒尝试数十亿次猜测。
• 去重、缓存键、ETag 和检测意外损坏:MD5、SHA-1 或 CRC32 就够了,速度也快,因为没有人会试图伪造碰撞。
本工具如何计算大文件的哈希
浏览器内置的 WebCrypto API 只能对一次性载入内存的缓冲区计算哈希。对文本来说没问题,本工具也会用它。但对于 4 GB 的文件,这意味着要把 4 GB 读进标签页,在大多数设备上都会失败或崩溃。
因此,文件会交给 SHA-1、SHA-256、SHA-384、SHA-512 和 CRC32 的流式实现(MD5 使用 spark-md5)处理,每次处理 4 MB,并通过 File.slice 直接从磁盘读取每个分片。无论文件多大,内存占用都保持平稳。这些实现在边界长度和随机数据上,都与 Node 基于 OpenSSL 的 crypto 模块进行了逐字节比对测试。
在较新的笔记本电脑上,MD5、SHA-1 或 SHA-256 的速度大约为每秒 150–250 MB,SHA-384 和 SHA-512 约为其三分之一,因为 JavaScript 必须用 32 位片段模拟它们的 64 位运算。所有选中的算法共用一次文件遍历,所以取消勾选不需要的算法是最简单的提速方法。
如何阅读校验和文件
Linux 发行版和开源项目会发布 SHA256SUMS 之类的文件。每行先是十六进制摘要,然后是两个空格,再是文件名,这正是 sha256sum 生成的格式。macOS 的 shasum 使用相同格式;BSD 风格的工具则写作 SHA256 (file.iso) = digest。
两种行格式都可以粘贴到比较字段中:工具会提取其中的摘要,忽略其余部分,以及大小写、空格和冒号。如果项目还发布了签名文件(SHA256SUMS.gpg 或 .sig),用项目的密钥验证该签名,才能证明校验和列表本身没有被替换。
相关免费工具
- Bcrypt 生成器 — 按你选择的成本因子用 bcrypt 哈希密码,校验密码与 bcrypt 哈希是否匹配,并了解哈希各部分的含义。
- Base64 编码 / 解码工具 — 把文本或文件编码为 Base64,把图片转成带 CSS 和 <img> 代码片段的 data URI,还能把 Base64 解码回可预览的文件。数据不会离开你的浏览器。
- 密码生成器 — 生成高强度随机密码、好记的密码短语或 PIN 码。完全在浏览器中运行,不发送、不存储任何内容。
- TOTP 生成器 — 把 Base32 密钥转换为带倒计时的实时 2FA 验证码,为身份验证器应用生成 otpauth:// 二维码,或解析现有 URI。