CodeKitHub
生成器工具

MD5 加密/解密在线工具

最后更新:

很多人搜索“MD5 解密”工具,但严格来说 MD5 不是加密算法,而是单向哈希函数,根本没有“解密”这回事。这个工具做的是真正可行的部分:把任意文本瞬间转换成 32 位 MD5 哈希值,全程在浏览器本地完成,方便你校验数据或与已知哈希比对。

MD5 哈希值

MD5 是单向哈希,无法还原为原文。

工具介绍

MD5(Message Digest 5)可以把任意输入——一个单词、一个密码、甚至一整个文件——转换成固定长度的 128 位指纹,以 32 位十六进制字符表示。相同的输入永远得到相同的哈希值,哪怕只改一个字符,结果也会完全不同。

“加密”这个词经常被用来形容 MD5,但严格来说并不准确。加密是可以用密钥还原的,而哈希从设计上就不可逆。网上那些“MD5 解密”网站并不是真的在做数学上的逆运算——它们只是把哈希值拿去和一个巨大的、预先计算好的常见词库/密码库做比对,只有当你的原文恰好在那个库里时才能“解出来”。

MD5 由 Ron Rivest 于 1992 年发布,作为 RFC 1321 标准的一部分。它在安全用途上已被证明存在漏洞(可以人为制造碰撞),但在不涉及安全的场景,例如校验和、缓存键和去重,依然被广泛使用。

为什么使用它?

  • 生成 MD5 哈希值,校验文件或字符串是否被意外改动。
  • 与已知/公布的 MD5 值比对,确认数据完整性。
  • 生成确定性的缓存键或去重 ID。
  • 清楚理解为什么“解密”MD5 哈希值实际上是不可能的。
  • 100% 本地运行:你的输入在浏览器中完成哈希计算,绝不会上传。

使用方法

  1. 在输入框中输入或粘贴文本。
  2. 点击“计算 MD5”。
  3. 查看生成的 32 位哈希值(如需大写,勾选“大写输出”)。
  4. 点击“复制”获取哈希值,或用它与你已有的哈希值进行比对。

示例

输入

hello

输出

5d41402abc4b2a76b9719d911017c592

MD5 是确定性的:文本“hello”在任何工具上、任何时候都会得到这个完全相同的哈希值。

“加密”与“哈希”:术语为什么重要

加密和哈希解决的是不同的问题,混淆两者会导致真正的安全隐患。加密是用密钥进行可逆转换——用密钥加密,用对应的密钥解密,就能还原原文。哈希是完全不可逆的单向转换,根本没有密钥这一说——从设计上就不存在把哈希值还原为原文的操作。

MD5 是一种哈希函数,而不是加密算法。日常口语中说“MD5 加密”很常见,但这会造成错误预期:不存在合法的“MD5 解密”操作。任何声称能做到这一点的服务,要么是查表(只对常见的、已知的输入有效),要么根本就不管用。

MD5 依然适用的场景

  • 运行前校验下载的文件是否与发布方提供的校验和一致。
  • 根据 URL 或查询字符串生成确定性的缓存键。
  • 通过对每条记录求哈希再比对哈希值来去重,而不必比对完整文本。
  • 快速判断两个文件是否字节级完全相同,而不用直接做逐字节比对。

什么场合应完全避免使用 MD5

密码存储、数字签名,以及任何攻击者能从伪造匹配中获益的场景,都绝对不要使用 MD5。因为碰撞可以被人为构造,而且较短或常见输入的未加盐 MD5 值可以通过查表还原,MD5 在这些场景中不提供任何实际安全性。密码请使用 bcrypt、scrypt 或 Argon2;需要抗篡改的签名与完整性校验,请使用 SHA-256 或更强的算法。

常见问题

我能把 MD5 哈希值解密还原成原文吗?

不能——哈希从设计上就是单向的,无法从哈希值反推出原文。所谓的“MD5 解密”网站只是在一个巨大的常见输入预计算表里做查找,所以独特或较长的原文根本无法被还原。

那“MD5 解密”网站到底在做什么?

它们维护着庞大的数据库,把常见单词、姓名、泄露的密码和它们对应的 MD5 值一一对应存好,然后做查表匹配。如果你的原文不在这个库里(对于任何不那么简单的内容来说很常见),它们就根本查不出结果。

MD5 适合用来存储密码吗?

绝对不适合。MD5 计算速度快,容易被暴力破解,也存在已知的碰撞攻击,而查表“解密”正是破解未加盐 MD5 密码存储的常见手段。密码应使用 bcrypt、scrypt 或 Argon2。

为什么同样的文本在另一个工具上得到不同的哈希值?

通常是一些看不见的差异:末尾多了一个换行或空格、换行符不同(\r\n 与 \n)、或文本编码不同。只要字节完全相同,MD5 哈希值就一定完全相同。

我的文本会被上传到服务器计算吗?

不会。MD5 哈希值是通过 JavaScript 直接在你的浏览器中计算的,你的输入不会被传输到任何地方。

相关工具