MD5 在线加密(文件 / 图片)

拖进一个文件(图片、PDF、压缩包、安装包都行)或输入文本,立即得到 MD5 值,不限文件大小。可以粘贴对方给出的哈希自动比对,确认文件没被改过。支持 16 位、32 位输出与大小写切换,所有计算均在浏览器本地完成,不上传任何数据。
文本输入
文件上传
拖拽文件到此处,或点击选择文件

图片、PDF、压缩包、安装包都可以,不限大小

输出选项
校验比对
说明:
1. 文本输入与文件上传二选一,文件上传优先。
2. 文本为空时自动使用当前时间戳作为输入。
3. 文件不限大小,分片读取逐块计算,几个 GB 的文件也能算,进度显示在按钮上。
4. 校验比对栏可以直接粘贴 md5sum 那种「哈希 + 空格 + 文件名」的整行,会自动只取哈希部分;对方给的是 16 位写法也认。
5. MD5 是单向散列算法(中文习惯称"加密"),无法解密,也不应再用于安全相关场景。

关于 MD5 加密与解密

MD5 算「加密」吗?

严格来说不算。加密是可逆的:有密钥就能还原出原文。MD5 是单向散列函数,把任意长度的输入压缩成固定的 128 位摘要,这个过程会丢失信息,本身就不存在「还原」这一步。中文习惯把它叫作「MD5 加密」,本页沿用这个说法,指的其实是计算 MD5 值。

顺带分清一个常被混淆的东西:Base64 既不是加密也不是散列,而是编码,完全可逆、人人可还原,作用是让二进制数据能在只允许文本的地方传输。看到有人拿它「加密」密码,那是个安全问题。

MD5 能解密吗?

不能。任何声称能「MD5 解密」的网站,做的都是彩虹表反查:事先把海量常见口令(123456、admin、常见英文单词、手机号段等)算出 MD5 存进数据库,你输入一个哈希,它去库里查有没有对应记录。查得到,是因为你的原文恰好是个常见字符串;查不到,就什么也做不了。

所以结论很实际:一段随机的长口令,或者加了盐(salt)之后的口令,任何「解密站」都查不出来。反过来,如果你的密码能被这类站点秒查出来,说明它本来就在公开字典里,应该立刻更换——换成随机密码生成器生成的长口令,它不经过网络,生成什么只有你自己知道。

那 MD5 现在还能用在哪?

可以继续用于完整性校验:下载文件后算一次 MD5,和发布方给出的值比对,确认传输过程没有损坏 —— 上面的「校验比对」栏就是干这个的,粘进对方的值即可,不必自己盯着两串十六进制逐位看。也常用于生成缓存键、去重标识这类不涉及安全的场景。

不应该再用于任何安全用途。MD5 的碰撞攻击早已实用化,构造两个 MD5 相同但内容不同的文件只需要普通电脑几秒钟,因此它不能用来防篡改或做数字签名。存储用户密码请使用 bcrypt、scrypt 或 Argon2 这类专门的慢哈希算法,它们内置加盐并且可以调节计算成本。

16 位和 32 位怎么选?

32 位是完整的 MD5 值(128 位二进制的十六进制写法),需要和别人比对时用它。16 位是从 32 位里截取中间一段的习惯做法,只是子串、不是另一种算法,位数变少意味着碰撞概率上升,仅适合对长度有限制的展示场景。

常见问题

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

MD5 产生 128 位(16 字节)哈希,SHA-1 产生 160 位,SHA-256 产生 256 位。位数越高,理论上抗碰撞能力越强。MD5 和 SHA-1 均已被攻破,不适用于安全场景;SHA-256 目前仍是主流安全哈希算法,可以用本站的 SHA256 在线加密计算。

MD5 可以解密吗?

不能。MD5 是单向散列函数,设计上就不可逆。所谓的"MD5 解密"网站是彩虹表反查,只对已被收录的常见字符串有效,随机长口令或加盐后的口令查不出来。上方「关于 MD5 加密与解密」一节有更详细的说明。

怎么算一张图片的 MD5 值?

把图片直接拖进上面的上传框,点「计算 MD5」就行,JPG、PNG、GIF、WebP、HEIC 都一样 —— MD5 算的是文件的字节,不认识里面是什么内容,所以不需要按格式区分。也正因为算的是字节,看起来一模一样的两张图 MD5 可以完全不同:重新保存一次、改一下压缩质量、甚至只是被微信或 QQ 转发过一轮(它们会重新编码并压缩),字节就变了,MD5 跟着变。想确认两张图是不是同一个文件,比 MD5 是准的;想确认「画面是否相同」,MD5 帮不上忙。

PDF、安装包这类大文件的 MD5 怎么算?

和图片一样,拖进来即可,没有大小限制。本页把文件切成 4 MB 一片逐块喂给哈希算法,全程只有一片在内存里,所以几个 GB 的 PDF、ISO、安装包都能算,进度会显示在按钮上。算大文件需要几秒到几十秒,期间不要关页面。

只要文件字节一致,在哪台电脑、用哪个工具算出来的 MD5 都必须一样。和对方给的值不一致,说明的是这两份文件不同 —— 常见原因是下载没完成、下到的是网页而不是文件,或者发布方换过一次文件而校验值没更新。

怎么用 MD5 校验下载的文件有没有出错?

把文件拖进上传框,在「校验比对」栏粘贴发布方给出的 MD5 值,点计算:一致会显示绿色提示,不一致显示红色。这一栏可以直接粘贴 md5sum 那种「哈希 + 空格 + 文件名」的整行,也认 md5: 前缀和 16 位写法,不用手工清理。如果你粘进来的值长度不像 MD5(比如 64 个字符),页面会直接告诉你那多半是 SHA-256,该换到SHA256 在线加密那一页去算。

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

不会。整个计算由浏览器用本地 JavaScript 完成,文件既不上传也不缓存到任何服务器,本站也没有后端可以接收它。这一点对大文件尤其实际 —— 算一个 3 GB 的安装包不需要先把 3 GB 传出去。断网之后本页照样能算,可以自己试。

16 位和 32 位 MD5 有什么区别?

32 位 MD5 是完整的 MD5 哈希值(128 位十六进制表示)。16 位 MD5 是 32 位的中间 16 位(从第 8 位到第 24 位)。16 位不是独立的哈希算法,只是 32 位的子串。