Skip to content

在线 MD5 哈希生成器与文件校验工具

在线生成 MD5、SHA-256、SHA-1、SHA-512 哈希值 — 完全免费,浏览器本地运算,无需注册。支持文本和文件哈希、校验和验证、哈希值对比,一键复制,数据绝不离开您的设备。

无追踪 浏览器中运行 免费
所有哈希计算均在浏览器本地完成,不会向任何服务器传输数据。
算法

什么是 MD5 哈希生成器?

MD5 哈希生成器使用 MD5 算法将任何文本或文件转换为固定长度的 128 位(32 个十六进制字符)指纹。本工具还支持 SHA-1(40 个十六进制字符)、SHA-256(64 个十六进制字符)、SHA-384(96 个十六进制字符)和 SHA-512(128 个十六进制字符)。

哈希函数是单向的:您可以从输入计算哈希值,但无法通过哈希值还原原始数据。这使其非常适合验证文件完整性、生成校验和以及创建唯一标识符

重要提示:MD5 和 SHA-1 在密码学上已被攻破,不应用于密码哈希或数字签名等安全用途。对于安全敏感的应用,请使用 SHA-256 或 SHA-512。对于密码存储,请改用 bcrypt、scrypt 或 Argon2。

所有哈希计算均完全在浏览器中运行——SHA 系列使用 Web Crypto API,MD5 使用纯 JavaScript 实现。您的数据不会离开设备——可通过浏览器的网络选项卡验证。

// Hash text using Web Crypto API (SHA-256)
async function sha256(text) {
  const data = new TextEncoder().encode(text);
  const hash = await crypto.subtle.digest('SHA-256', data);
  return Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

await sha256('Hello, World!');
// → 'dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f'

核心功能

5 种哈希算法

支持 MD5、SHA-1、SHA-256、SHA-384 和 SHA-512,一个工具全部搞定。一键切换算法,即时对比输出结果。

文本与文件哈希

支持对任意文本或上传的文件进行哈希计算,支持拖放操作。完美适用于验证文件完整性和生成校验和。

100% 浏览器端处理

所有计算均使用 Web Crypto API 在本地运行,数据不会发送到任何服务器——您的文件和文本完全私密。

即时输出结果

毫秒级获取哈希结果,一键复制到剪贴板,支持在大写和小写十六进制输出之间切换。

哈希算法对比

MD5

128 位 / 32 hex

速度最快,但自 2004 年起已被密码学攻破。仅适用于非安全用途的校验和、缓存键和数据去重。不可用于密码或数字签名。

SHA-1

160 位 / 40 hex

同样已被攻破 — Google 在 2017 年展示了实际碰撞攻击。所有主流浏览器和证书颁发机构已弃用。仅用于旧系统兼容。

SHA-256

256 位 / 64 hex

当前安全哈希的行业标准。用于 TLS 证书、比特币和文件完整性验证。推荐用于大多数需要加密哈希的新项目。

SHA-512

512 位 / 128 hex

SHA-2 家族中最强的选项。在 64 位处理器上实际比 SHA-256 更快。用于高安全性应用、SSH 密钥和 TLS 1.3 等协议。

示例

空字符串的 MD5 哈希

(空字符串)
d41d8cd98f00b204e9800998ecf8427e

MD5('') = d41d8cd98f00b204e9800998ecf8427e。空输入的 MD5 哈希值是一个众所周知的常量,常用于测试。

'Hello, World!' 的 SHA-256 哈希

Hello, World!
dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f

SHA-256('Hello, World!') = dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f。SHA-256 生成 64 个字符的十六进制字符串。

文件 MD5 校验和

ubuntu-24.04-desktop-amd64.iso
(对比发布者提供的校验和)

使用「文件」选项卡计算文件的 MD5 校验和。将此哈希与发布者提供的校验和进行比较,可验证文件在下载过程中是否被篡改。

使用方法

  1. 1

    选择输入模式

    选择「文本」选项卡对文本内容进行哈希,或选择「文件」选项卡对设备上的文件进行哈希。

  2. 2

    输入数据

    在文本模式下,输入或粘贴您的内容。在文件模式下,拖放文件或点击上传区域进行浏览。

  3. 3

    选择算法

    从 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512 中选择。默认选中 MD5。

  4. 4

    生成并复制

    点击「生成哈希」计算结果。使用「复制」按钮复制哈希值,或切换「大写」输出大写十六进制格式。

常见错误

换行符差异

不同操作系统使用不同的换行符——Unix/macOS 使用 LF(\n),Windows 使用 CRLF(\r\n)。在不同系统上复制的相同文本会产生不同的哈希值。

✗ 错误
"Hello\r\nWorld" → 4a24aba0b89e5056...  (CRLF)
✓ 正确
"Hello\nWorld" → 68e109f0f40ca72a...  (LF — normalize first)

字符编码差异

同一字符在 UTF-8 和 Latin-1(ISO-8859-1)中可能有不同的字节表示。即使文本看起来相同,也会产生不同的哈希值。

✗ 错误
"café" (Latin-1, 4 bytes) → 5765dac89dc15ef4...
✓ 正确
"café" (UTF-8, 5 bytes) → 5c462401420cd614...  (always use UTF-8)

尾部空白字符

复制粘贴时不可见的尾部空格或换行符会改变哈希值。在比较哈希时,请始终修剪输入或注意尾部空白。

✗ 错误
"Hello " (trailing space) → d3ed7e7e35011513...
✓ 正确
"Hello" (no trailing space) → 8b1a9953c4611296...

常见使用场景

文件完整性验证
将下载文件的哈希值与发布者提供的校验和进行比较,确保文件未被损坏或篡改。
数据去重
对文件或数据块生成哈希值,快速识别重复内容,无需逐字节比较。
缓存键生成
从输入数据创建确定性哈希键,用于缓存失效、ETag 或内容寻址存储。
API 签名验证
许多 API 在请求签名过程中使用 MD5 或 SHA-256。使用本工具手动验证或调试 API 签名。

技术细节

MD5 算法
MD5(消息摘要算法 5,RFC 1321)生成 128 位哈希值。它以 512 位块处理输入,经过 4 轮各 16 次运算。虽然速度快,但 MD5 在密码学上已被攻破——碰撞攻击可在数秒内完成。
SHA 系列
SHA-1 生成 160 位哈希值;SHA-256 和 SHA-384/512 属于 SHA-2 系列。本工具对所有 SHA 变体均使用浏览器原生的 Web Crypto API(crypto.subtle.digest()),确保最优性能和正确性。
Web Crypto API
SubtleCrypto.digest() 方法在所有现代浏览器中提供硬件加速的哈希计算。它接受 ArrayBuffer 输入并返回 ArrayBuffer 输出,我们将其转换为十六进制字符串进行显示。

最佳实践

不要将 MD5 用于安全目的
MD5 在密码学上已被攻破,不要将其用于密码哈希、数字签名或证书验证。完整性校验请使用 SHA-256 及以上算法,密码存储请使用 bcrypt 或 Argon2。
校验和优先选用 SHA-256
当您需要可靠的文件完整性校验和时,SHA-256 是当前标准。速度快、抗碰撞性强、广泛受支持。
使用哈希验证下载内容
下载软件或镜像文件时,始终将哈希值与发布者提供的校验和进行比对。使用「文件」选项卡计算哈希并进行比较。
哈希的敏感性
哈希函数对输入变化极为敏感,即使一个比特的差异也会产生完全不同的哈希值。确保输入内容与您想要哈希的内容完全一致,包括空格和换行符。

常见问题

什么是 MD5 哈希?
MD5(消息摘要算法 5)是一种加密哈希函数,它接受任何输入——文本、文件或二进制数据——并生成固定的 128 位(32 个十六进制字符)指纹。相同的输入始终产生相同的哈希值,但输入的微小变化会产生完全不同的输出。MD5 由 Ronald Rivest 于 1991 年设计,定义在 RFC 1321 中。
MD5 还安全吗?
不安全。MD5 在密码学上已被攻破,不应用于安全目的。针对 MD5 的碰撞攻击可在现代硬件上数秒内完成。MD5 对于非安全用途(如校验和、缓存键、数据去重)仍可接受,但任何涉及安全的场景请使用 SHA-256 或更强的算法。对于密码存储,请使用 bcrypt 或 Argon2 而非任何哈希函数。
MD5 和 SHA-256 有什么区别?
MD5 生成 128 位(32 个十六进制字符)哈希值,速度快但不安全。SHA-256 生成 256 位(64 个十六进制字符)哈希值,在密码学上仍然安全。SHA-256 是由 NSA 设计、NIST 标准化的 SHA-2 系列算法的一部分。新项目请始终优先选择 SHA-256 而非 MD5。
如何验证文件校验和?
验证文件校验和的步骤:1)下载文件并记下发布者提供的校验和。2)打开本工具并切换到「文件」选项卡。3)拖放下载的文件或点击浏览。4)选择发布者使用的相同算法(通常是 SHA-256 或 MD5)。5)点击「生成哈希」并将结果与发布者的校验和进行比较。如果匹配,则文件完整无误。您还可以使用「对比」选项卡粘贴两个哈希值进行自动匹配检查。对于验证 Base64 编码的校验和,请先解码。
MD5、SHA-1、SHA-256 — 应该使用哪个?
大多数情况下请使用 SHA-256。MD5(128 位)在密码学上已被攻破——仅在需要向后兼容或非安全校验时使用。SHA-1(160 位)也已被攻破,主要浏览器和 CA 已弃用。SHA-256(256 位)仍然安全,是当前完整性验证、数字签名和证书验证的行业标准。SHA-512 提供更大的输出,但在专业应用之外很少需要。
能通过 MD5 哈希值还原原始文本吗?
不能。哈希函数在设计上是单向的——您无法通过数学方法从哈希值还原输入。但对于短字符串或常见字符串,攻击者会使用预计算的「彩虹表」来查找已知的哈希与文本的对应关系。这就是为什么绝不能用普通 MD5 存储密码。
使用本工具时我的数据安全吗?
安全。所有哈希计算完全在浏览器中通过 JavaScript 完成,数据不会发送到任何服务器。您可以通过打开浏览器开发者工具(F12 → 网络选项卡)来验证——使用工具时您会看到零外发请求。您的文本和文件不会离开设备。
为什么相同文本得到不同的哈希值?
如果您得到不同的哈希值,请检查不可见的差异:尾部空格、不同的换行符(\n 与 \r\n)或编码差异。哈希函数极为敏感——即使多一个空格也会产生完全不同的哈希值。同时确保两次比较使用相同的算法。
可以对大文件进行哈希计算吗?
可以。由于所有处理均在浏览器中使用 Web Crypto API 完成,本工具可以对任意大小的文件进行哈希。但非常大的文件(数 GB)可能需要更长时间处理并占用大量内存。对于大多数 1 GB 以下的文件,哈希计算可在数秒内完成。
MD5 校验和与哈希有什么区别?
MD5 校验和与 MD5 哈希本质上是同一个东西,都指 MD5 算法输出的 128 位(32 个十六进制字符)结果。「校验和」通常在验证文件完整性时使用(如将下载文件与发布者提供的值进行比较),而「哈希」是更通用的术语。使用上方的「文件」选项卡即可计算任何文件的 MD5 校验和。
MD5 和加密是一回事吗?
不是。MD5 是哈希函数,不是加密。加密是可逆的——使用正确的密钥可以将数据还原为原始形式。哈希是单向的——无法从哈希值恢复原始输入。MD5 将输入转换为固定长度的 32 字符指纹,没有密钥,也无法「解密」MD5 哈希。如需加密请使用 AES 或 RSA,密码存储请使用 bcrypt 或 Argon2,绝不要使用普通 MD5。
如何在 JavaScript 或 Python 中生成 MD5 哈希?
在 Python 中:import hashlib; hashlib.md5('文本'.encode()).hexdigest()。在 Node.js 中:require('crypto').createHash('md5').update('文本').digest('hex')。在浏览器 JavaScript 中,Web Crypto API 原生不支持 MD5,需使用 crypto-js 等库。或者直接使用本工具,无需编写代码即可快速生成哈希值。