编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 哈希加密 / MD5加密

MD5加密

计算文本的 MD5 值。

输入
结果

这个工具能做什么

这个工具做的事情很单纯:把你在输入框里填的任意文本,按 MD5 算法算出一段固定长度的摘要值,输出 32 位十六进制字符串。不管原文是一个字还是几万字,结果长度都一样。它解决的是「需要一个内容指纹」的场景——你想确认两份数据是否完全相同、想给一段内容生成一个短小固定的标识、或者想核对别人给你的校验值对不对,都不必逐字节比对,在线算一遍 MD5 对比结果即可。整个计算在浏览器本地完成,文本不会上传到服务器。

MD5 全称 Message Digest Algorithm 5,输出的是 128 位(16 字节)散列值,习惯用 32 个十六进制字符表示。它先把文本按某种字符编码(通常是 UTF-8)转成字节序列,做长度填充后切成 512 位的分组,再经过四轮共 64 步的位运算逐块压缩,最终汇成那 128 位摘要。这个过程是确定性的:同样的输入永远得到同样的输出,改动一个字符,结果会大面积变化,也就是所谓的雪崩效应。但它是单向的——从摘要几乎无法反推原文,因为哈希把任意长度的信息压进了固定的 128 位,原文信息已经不可逆地丢失了。

最常见的用法是文件校验。比如你从镜像站下载一个安装包,页面上往往附了一串官方 MD5 值,把下载后的文件算一遍 MD5 生成结果,和官方值对上了,基本能确认文件在传输中没被截断或篡改。另一个典型场景是接口签名:很多开放平台要求你把请求参数按规则拼成字符串、再拼上密钥,算出 MD5 作为 sign 字段传给服务端,服务端用同样规则重算比对,以此防止参数在中途被改动。此外像给缓存 key、给去重逻辑生成一个定长指纹,用 MD5 计算也很顺手。

有几点容易踩坑。第一,「MD5 加密」是习惯叫法,严格说它是摘要/哈希而不是加密,没有对应的解密——网上那些「MD5 解密」站,本质是拿海量常见字符串预先算好结果做反查(彩虹表),只能命中弱口令这类高频原文,并不是真的还原。第二,MD5 早已被证明能构造碰撞,安全强度不足,别再用它裸存用户密码,存口令应改用 bcrypt、argon2 这类加盐慢哈希。第三,结果和编码强相关:同一句中文,用 UTF-8 和 GBK 算出的 MD5 完全不同,末尾多个换行或空格也会变;如果你发现和后端算的对不上,先核对编码和有没有多余字符。标准输出是小写十六进制,大写只是显示形式,值是一样的。

MD5加密是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“md5加密”、“md5在线”、“md5计算”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

MD5 能不能解密,把摘要还原成原文?
不能。MD5 是单向哈希,计算时已经把原文信息不可逆地压缩掉了。所谓「MD5 解密」是用彩虹表反查预先算好的常见字符串,只对弱口令等高频原文有效,并非真正还原任意文本。
为什么我用别的语言或工具算出来的 MD5 和这里不一样?
绝大多数是字符编码不同,比如一方按 UTF-8、另一方按 GBK 编码同一段中文,字节序列不同,结果自然不同。其次是原文末尾多了换行或空格,或者对方取的是 16 位 MD5。核对这几处一般就能对上。
MD5 加密和真正的加密是一回事吗?
不是。加密是可逆的,有密钥就能解回明文;MD5 是摘要算法,只能算出、不能还原,也没有密钥的概念。「加密」只是民间叫法,准确说它属于哈希。
现在还能用 MD5 来存储用户密码吗?
不推荐。MD5 速度快又存在碰撞和成熟的彩虹表,裸存或简单加盐都容易被爆破。存口令应使用 bcrypt、scrypt、argon2 这类专门设计的加盐慢哈希算法。
16 位 MD5 和 32 位 MD5 是什么关系?
MD5 标准输出就是 32 位十六进制。所谓 16 位是从这 32 位里截取中间 16 位得到的,信息更少、碰撞概率更高,只在个别老系统里出现,日常校验一般都用 32 位。

相关工具

查看全部「哈希加密」工具 →

相关名词解释