选择语言

哈希生成器:一次生成 MD5、SHA-1、SHA-256、SHA-384、SHA-512 与 CRC32 哈希

输入文本或选择文件,一次生成 MD5、SHA-1、SHA-256、SHA-384、SHA-512 与 CRC32 哈希。支持 Hex/Base64 输出和预期校验码比对,文件在浏览器本地处理。

哈希生成器如何使用 ↓
按输入原文以 UTF-8 进行哈希,包括空格和换行
与所有结果比对,忽略字母大小写和多余空格
Mehmet Demiray 发布日期 更新日期
分享

哈希生成器能做什么:从输入到校验结果

打开哈希生成器后,页面主要分为输入区域、算法选择、输出格式和预期校验和四个部分。输入区域可选择 文本 或 文件。文本模式会把输入框里的内容按 UTF-8 编码原样计算,不会自动去除行尾空格或末尾换行;文件模式会读取一个本地文件。算法区默认同时勾选 MD5、SHA-1、SHA-256、SHA-384 和 SHA-512,还可以手动勾选 CRC32。输出格式可选择 hex 或 Base64,其中 hex 还可以切换小写或大写。

结果区会为每个已选算法显示一行哈希值,并在底部标注输入信息:文本模式显示 UTF-8 输入字节数,文件模式显示文件名和文件大小。如果只想快速验证某个下载包,通常优先看 SHA-256 这一行。

预期校验和字段用于比对。你从发布方复制一串校验值粘贴进去,工具会把它与所有结果逐行比较。hex 比较会自动忽略字母大小写和前后空格,从 sha256sum 输出复制的一整行也可以识别,取第一个空白分隔的字段作为校验值。匹配的行会标记为 匹配,其余标记为 不匹配。这样即使发布方没有明确说算法,只要所有常见算法同时计算,也能很快找出匹配项。

如何用校验和验证下载文件

从网上下载系统镜像、固件或安装包后,最好先核对发布方公布的 SHA-256 校验和。步骤如下:

  1. 打开哈希生成器,选择 文件,点击选择下载好的文件。
  2. 等待浏览器读取并计算,进度条会显示读取进度。
  3. 回到发布页面,复制 SHA-256 值,粘贴到 预期校验和 输入框。
  4. 查看对应 SHA-256 行是否显示 匹配。匹配表示文件与发布方生成校验和时的文件完全一致。

只要文件中有任意一个字节发生变化,例如下载中断、代理缓存损坏或磁盘读取错误,哈希值都会完全不同。哈希算法具有雪崩效应,极小的输入差异会扩散到整个输出,因此校验和可以可靠地发现意外损坏。

需要注意,校验和本身不能证明文件一定安全。如果攻击者能同时替换下载文件并修改网页上的校验和,那么你仍会看到匹配。更可靠的做法是核对发布方使用签名密钥签署的校验和。对于普通下载完整性检查,从官方或可信镜像复制 SHA-256 并核对已经足够。Linux 也可用 sha256sum 文件名,Windows 可用 certutil -hashfile 文件名 SHA256,macOS 可用 shasum -a 256 文件名。

选择哪种哈希算法:MD5、SHA-1、SHA-256 还是 SHA-512

如果你只是在下载后确认文件没有因网络或磁盘问题损坏,MD5 或 SHA-1 仍然够用;但如果你面对的场景里可能有人故意篡改文件,就应选择 SHA-256 或更强的算法。MD5 和 SHA-1 的碰撞已经可以被实际构造,不能用于数字签名、证书或安全校验。RFC 6151 已明确 MD5 不适合安全用途,NIST 也已要求停止使用 SHA-1 作为签名算法。SHA-2 系列依据 FIPS 180-4 定义,SHA-256、SHA-384、SHA-512 是当前推荐使用的密码学哈希函数。CRC32 不属于密码学哈希,它只适合快速检查偶然错误,不能抵抗有意的修改。

常见算法输出长度如下:

| 算法 | 输出位数 | hex 字符数 | 主要用途 | | MD5 | 128 位 | 32 个 | 完整性检查,不建议安全用途 | | SHA-1 | 160 位 | 40 个 | 兼容旧系统,不建议安全用途 | | SHA-256 | 256 位 | 64 个 | 当前最常用的安全校验 | | SHA-384 | 384 位 | 96 个 | 较高安全余量 | | SHA-512 | 512 位 | 128 个 | 较高安全余量,64 位机器上可能更快 | | CRC32 | 32 位 | 8 个 | 快速错误检测 |

选择时优先看发布方公布的是哪种。若没有明确说明,SHA-256 是最稳妥的默认项。SHA-512 同样安全,输出更长,在一些 64 位设备上速度可能优于 SHA-256,但发布方采用 SHA-256 的情况更普遍。

哈希不是加密:为什么不能把散列值还原成原文

哈希是一种单向摘要,不是加密。加密有密钥,可以通过解密恢复出明文;哈希不保存原文,而是把任意长度的输入压缩成固定长度的输出。例如 SHA-256 的输入可以是一个字符,也可以是一整部电影,输出始终是 256 位。这个计算过程不可逆,你无法从哈希值本身推出原文,只能通过暴力猜测或查表来尝试匹配。

这也是为什么短文本或常见口令的哈希值可以被预计算表快速查到。假如你把 123456 直接做 SHA-256,攻击者不需要“解密”,只需在预先算好的常见口令表中查找这个哈希值即可。因此,存储密码时不应使用普通 SHA-256 或 MD5,而应使用专门设计为慢速且带盐的算法,例如 bcrypt 或 Argon2。它们会增加每次尝试的成本,使暴力攻击变得不现实。

哈希更常见的用途是完整性校验、版本指纹、缓存键、API 签名等。它的目标不是保密,而是回答“这段数据是否和原来完全一样”。把哈希理解为“指纹”比理解为“加密后的密文”更准确。指纹不能还原成一个人,但两个人指纹相同几乎不可能;良好的密码学哈希也追求这种唯一性和不可逆性。

为什么同一个文本的哈希值不一样

很多人发现同一个句子在不同工具里算出的哈希不同,通常不是算法错了,而是输入内容或编码不同。哈希计算的是字节,而不是你看到的“文字”。一个行尾空格、一个末尾换行,或 Windows 的 \r\n 与 Unix 的 \n,都会改变输入字节,从而改变最终哈希。文本编码也会造成差异,同样的中文在 UTF-8 与 GBK 下字节序列不同,结果自然不同。

本哈希生成器始终使用 UTF-8 编码,并且不会自动去除文本两端空白。你在输入框里打了什么字节,就按什么字节计算。如果你希望先去除尾部换行或调整行尾格式,可以使用 文本 MD5 生成器,它提供更细的行尾和修剪选项。但在这个工具里,最稳妥的做法是不要手工在文本末尾多按一次回车,也不要在校验和值前后留空格。

hex 输出的大小写不会影响比对结果,因为比对时会忽略字母大小写。Base64 输出则大小写敏感,必须严格一致。如果你粘贴的预期校验和来自 sha256sum 输出,工具会取第一个空白分隔字段,因此整行粘贴通常也能正确识别。若仍不匹配,先检查算法是否选对,再检查文件是否下载完整,最后确认文本是否带有额外空白或不同编码。

浏览器本地哈希:文件不上传、免费且没有账号限制

哈希生成器的文件计算完全在浏览器本地完成。当你选择文件后,浏览器使用 Web Crypto 接口读取文件并计算哈希,不会把文件内容上传到服务器。页面加载完成后,即使断网也可以继续计算文本或文件,因为计算逻辑已经在本地运行。这个过程不需要注册账号,也没有每日使用次数限制或按文件大小收费。

文件上限是 1 GB,因为 Web Crypto 需要把整个文件读入内存才能计算。对于超过限制或手机内存较小的设备,大文件可能会因内存不足而失败。普通系统镜像、安装包和固件通常远小于这个上限,可以正常处理。如果你需要计算单个文件的 MD5,并且希望同时获得 HMAC 选项,可以使用 单文件 MD5 哈希生成器。如果需要对一个文件夹里的多个文件批量生成 MD5,可以使用 批量文件 MD5 哈希生成器。

隐私方面,本地计算意味着文件名和内容不会通过哈希生成器上传,但浏览器本身的扩展、同步功能或系统监控工具仍可能访问本地文件,这不是本工具能控制的范围。对于敏感文件,建议在可信的离线环境中使用。

我们回答最多的问题

如何用哈希生成器生成 SHA-256 哈希?

选择“文本”或“文件”标签,保留 SHA-256 勾选,点击“生成哈希”。文本按 UTF-8 原样处理,文件在浏览器本地读取。结果会显示 SHA-256 的十六进制或 Base64 值,可在输出设置中切换。

如何验证下载文件的校验值?

在“文件”模式选择下载文件,把发布方公布的校验值粘贴到“期望校验值”框,点击“生成哈希”。如果对应行提示匹配,说明文件与生成校验值的文件一致。这只证明下载完整,不证明文件本身安全。

哈希生成器收费吗?需要注册吗?

免费,无需注册,也没有每日次数限制。文件和文本都在浏览器本地哈希,不会上传到服务器。

MD5、SHA-1 和 SHA-256 有什么区别?

主要区别是输出长度和抗碰撞能力。MD5 输出 128 位,即 32 个十六进制字符;SHA-1 是 160 位,即 40 个;SHA-256 是 256 位,即 64 个。MD5 和 SHA-1 已能被人为制造碰撞,SHA-256 是当前更安全的选择。

MD5 或 SHA-1 还能用吗?

用于检查意外损坏仍然可以,例如下载后确认文件没有传输出错。但不能用于数字签名、证书或任何可能被攻击者篡改的场景,因为碰撞可以被制造。

哈希是加密吗?

不是。哈希是单向定长摘要,没有密钥,也不能解密还原。短文本或常见口令的哈希可能被预计算表查到,所以密码存储应使用 bcrypt、Argon2 等加盐慢哈希算法,而不是直接使用 SHA-256 或 MD5。

输出格式选 Hex 还是 Base64?

校验和公告通常使用 Hex,建议优先看发布方给出的格式。Base64 更短,常见于 Subresource Integrity 和部分 API 签名场景。两者可互相切换,哈希值本身相同。

文件会被上传到服务器吗?

不会。文件通过浏览器 Web Crypto 在本地读取和计算,页面加载后可以离线使用。由于需要把整个文件放入内存,文件上限为 1 GB,在手机上大文件可能因内存不足失败。

为什么我的哈希值和发布方不一致?

先检查是否选对了算法,并确认下载文件是否完整。对于文本,多余空格、Windows 与 Unix 换行、编码不同都会改变结果。本工具始终按 UTF-8 原样哈希,不自动裁剪;十六进制比较不区分大小写。如果其他网站的 MD5 不同,可参考 MD5 哈希生成器 中的换行和去空格选项。

参考资料

  1. FIPS 180-4: Secure Hash Standard (SHS) · NIST
  2. RFC 1321: The MD5 Message-Digest Algorithm · IETF
  3. RFC 6234: US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF) · IETF
  4. RFC 6151: Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms · IETF
  5. NIST Transitioning the Use of Cryptographic Algorithms and Key Lengths (SP 800-131A Rev. 2) · NIST
  6. NIST Retires SHA-1 Cryptographic Algorithm · NIST
  7. SubtleCrypto: digest() method · MDN Web Docs