在线 MD5 哈希生成器与文件校验工具
在线生成 MD5、SHA-256、SHA-1、SHA-512 哈希值 — 完全免费,浏览器本地运算,无需注册。支持文本和文件哈希、校验和验证、哈希值对比,一键复制,数据绝不离开你的设备。
什么是 MD5 哈希生成器?
MD5(消息摘要算法 5)是由 Ronald Rivest 于 1991 年设计的 128 位加密哈希函数(RFC 1321),能将任意输入生成固定的 32 个十六进制字符指纹。MD5 曾广泛用于数字签名和证书验证,但现已被正式弃用于安全敏感场合——不过在非安全用途(如校验和、缓存键、数据去重)中仍十分常见。
正如 NIST SP 800-131A 所述:「MD5 不得用于数字签名……NIST 正式废除 MD5 的使用。」
本工具支持 MD5 以及 SHA-1(40 个十六进制字符)、SHA-256(64 个十六进制字符)、SHA-384(96 个十六进制字符)和 SHA-512(128 个十六进制字符)。NIST 于 2011 年废除了 MD5 在安全领域的使用(NIST SP 800-131A);任何安全敏感的场景请改用 SHA-256 或 SHA-512。
哈希函数是单向的:你可以从输入计算哈希值,但无法通过哈希值还原原始数据。这使其非常适合验证文件完整性、生成校验和以及创建唯一标识符。
重要提示:MD5 和 SHA-1 在密码学上已被攻破,不应用于密码哈希或数字签名等安全用途。密码存储请改用 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 hexSHA-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
选择输入模式
选择「文本」选项卡对文本内容进行哈希,或选择「文件」选项卡对设备上的文件进行哈希。
- 2
输入数据
在文本模式下,输入或粘贴你的内容。在文件模式下,拖放文件或点击上传区域进行浏览。
- 3
选择算法
从 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512 中选择。默认选中 MD5。
- 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 还安全吗?
MD5 和 SHA-256 有什么区别?
如何验证文件校验和?
MD5、SHA-1、SHA-256 — 应该使用哪个?
能通过 MD5 哈希值还原原始文本吗?
使用本工具时我的数据安全吗?
为什么相同文本得到不同的哈希值?
可以对大文件进行哈希计算吗?
MD5 校验和与哈希有什么区别?
MD5 和加密是一回事吗?
如何在 JavaScript 或 Python 中生成 MD5 哈希?
import hashlib; hashlib.md5('文本'.encode()).hexdigest()。在 Node.js 中:require('crypto').createHash('md5').update('文本').digest('hex')。在浏览器 JavaScript 中,Web Crypto API 原生不支持 MD5,需使用 crypto-js 等库。或者直接使用本工具,无需编写代码即可快速生成哈希值。 我需要验证下载的文件是否损坏——应该用 MD5 还是 SHA-256 来做校验和?
我的旧系统以 MD5 哈希存储密码——如何在不强制所有用户重置密码的情况下迁移到 bcrypt?
我在构建内容寻址存储系统——MD5 用于去重等非安全哈希场景还安全吗?
相关工具
查看所有工具 →JWT 解码器 · 在线解码工具
安全工具
免费 JWT 解码器,在线即时解码 JWT 令牌。查看头部、载荷、签名以及过期时间、算法和声明详情。100% 浏览器本地运行——令牌绝不离开你的设备。无需注册、无跟踪。
随机密码生成器 — 自定义长度、强度与安全性
安全工具
免费在线随机密码生成器,一键生成高强度安全密码。支持自定义长度、字符类型,批量生成多个密码。所有密码仅在浏览器本地生成,不上传不存储。
UUID 生成器与解析器 — v1, v4, v5, v7 批量生成
安全工具
免费 UUID 生成器,支持 v1/v4/v5/v7 全版本即时生成。解析验证任意 UUID,批量生成最多 50 个。无需注册,100% 浏览器本地运行。
进制转换器 — 二进制、十六进制、十进制、八进制互转
转换工具
在线免费进制转换工具,支持二进制、八进制、十进制、十六进制及 2-36 任意进制互转。无需注册,数据不离开浏览器,即时获取结果。
Base64 解码与编码工具
编码和格式化
免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。
在线压缩 JPEG、PNG、WebP 图片 — 免费批量处理
转换工具
免费在线压缩 JPEG、PNG、WebP 图片,体积缩小高达 80%。浏览器本地处理、图片不上传服务器。支持批量压缩 20 张、质量调节、前后对比预览。无需注册。