文件 MD5 校验
拖拽或选择文件,本地离线计算
在线MD5校验工具
免费在线MD5哈希计算与校验工具。支持文件拖拽上传、文本MD5加密、哈希值对比校验。所有计算完全在浏览器本地完成,文件不上传服务器。
文件MD5校验
支持拖拽或点击上传任意文件,本地离线计算MD5哈希值。支持大文件处理,计算过程显示进度条。文件不会经过任何网络传输,完全保护隐私。
MD5对比校验
输入预期的MD5值即可一键对比。快速验证下载文件是否完整无损、是否被篡改。比对结果一致/不一致直观显示。
文本MD5生成
输入任意文本即时计算MD5哈希值。支持中文、特殊字符等UTF-8编码。相同输入始终产生相同的128位(32个十六进制字符)哈希值。
MD5 算法详解
深入了解MD5哈希算法的原理、特性和安全现状。
MD5 概述
Message Digest 5
MD5由Ronald Rivest于1991年设计,是MD4的改进版。将任意长度输入映射为128位(16字节)固定长度哈希值,通常以32个十六进制字符表示。
算法流程
4轮×16步 = 64步运算
消息填充至512位倍数→分块处理→每块经过4轮运算(F/G/H/I函数),每轮16步,共64步。使用4个32位寄存器(A/B/C/D)作为状态。
雪崩效应
微小输入变化→巨大输出差异
输入即使只改变1位,输出哈希值也会完全不同。例如 "abc" 和 "abd" 的MD5值截然不同。这是哈希函数安全性的基本要求。
安全现状
不推荐用于安全场景
2004年王小云团队发现MD5碰撞攻击方法,可在几秒内构造两个不同内容但MD5相同的文件。目前MD5不适合用于数字签名和密码存储。
MD5 vs SHA
哈希算法族对比
MD5输出128位,SHA-1输出160位,SHA-256输出256位。安全性递增但速度递减。SHA-1也已被攻破。推荐使用SHA-256或SHA-3。
HMAC-MD5
带密钥的哈希
HMAC-MD5将MD5与密钥结合,用于消息认证。即使MD5本身存在碰撞攻击,HMAC-MD5在某些场景仍被认为是安全的。
应用场景
文件完整性校验
下载软件、固件、ISO镜像后,对比官方提供的MD5值,验证文件在传输过程中未被损坏或篡改。
数据去重
大规模存储系统中,通过比较文件MD5值快速判断文件是否重复。网盘秒传功能的核心原理之一。
缓存标识
Web开发中用文件内容的MD5值作为缓存键(如 style.abc123.css)。内容变化时MD5变化,自动刷新缓存。
数字取证
电子证据保全中计算文件MD5值作为完整性证明。确保证据在采集、传输和存储过程中未被修改。
MD5 专业知识
MD5 碰撞攻击
2004年王小云教授团队提出的差分攻击方法,可以在有限时间内构造两个具有相同MD5值的不同文件。这意味着MD5不能用于数字签名——攻击者可以构造合法签名但内容不同的文件。
MD5 长度扩展攻击
知道 MD5(M) 和 M 的长度(不需要知道 M 本身),可以计算 MD5(M||padding||M') 的值。因此不能简单用 MD5(secret+message) 做认证,应使用 HMAC 结构。
彩虹表攻击
预计算大量常见字符串的MD5值形成查找表(彩虹表),用于快速逆向简单密码的MD5哈希。防御方法:加盐(Salt),将随机字符串与密码拼接后再计算哈希。
MD5 仍可用的场景
虽然MD5不安全于密码学用途,但用于文件完整性校验(非恶意篡改)、数据去重、缓存指纹等非安全场景仍然足够。这些场景不需要抵抗刻意的碰撞构造。
常见问题
Q.文件会被上传到服务器吗?
绝对不会。本工具的MD5计算完全在浏览器本地的JavaScript引擎中完成。文件数据不会经过任何网络传输,您可以在断网状态下使用。适合处理保密文件和敏感数据。
Q.MD5和SHA-256该用哪个?
如果是验证文件下载完整性(非恶意篡改),MD5足够且更快。如果是安全场景(密码存储、数字签名、防篡改),应使用SHA-256或更强的算法。MD5已被证明存在碰撞漏洞。
Q.MD5值能反推出原文吗?
不能。MD5是单向哈希函数,从设计上就不可逆。但短密码可能被彩虹表(预计算查找表)命中。因此密码存储应使用bcrypt、scrypt等专用算法并加盐。
Q.两个不同文件的MD5值会相同吗?
理论上可以(称为碰撞),而且已有算法可以刻意构造碰撞。但自然碰撞概率极低(2¹²⁸分之一)。用于验证正常下载的文件完整性不必担心此问题。