MD5 是一种哈希(散列)算法,把任意长度的数据计算成固定 128 位(16 字节)的摘要,通常写成 32 位十六进制字符串。下面重点说明不可逆原理与常见误解。
MD5可以解密吗
MD5 没有解码方向。所谓“MD5 解密”只是用彩虹表或字典查已知明文,复杂、加盐的输入查不到。
- MD5 不是加密,所谓“MD5解密”网站只是在已知结果库中查表
- 计算前确认字符集和是否含换行:echo 默认会在末尾加换行
示例
输入:你好,世界
计算结果:dbefd3ada018615b35588a01e216ae6e
说明:对 UTF-8 字节计算 MD5。
JavaScript 示例
下面是 JavaScript 中处理MD5的常用写法:
// Node.js
const crypto = require("crypto");
crypto.createHash("md5").update("abc", "utf8").digest("hex");
// 900150983cd24fb0d6963f7d28e17f72
// 浏览器的 Web Crypto 不支持 MD5,需要使用第三方库(如 spark-md5)运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
特殊字符
空格、换行、制表符都会参与计算。“abc”与“abc\n”(末尾带换行)的 MD5 分别是 900150983cd2… 和 0bee89b07a24…,这是命令行结果与在线工具不一致最常见的原因。
本站的MD5计算器工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【MD5 能解密吗?】不能。MD5 是单向哈希,没有密钥也没有逆运算;所谓解密是查已知明文的对照表,只对简单字符串有效。
【MD5 是多少位?】128 位,即 16 字节,写成十六进制是 32 个字符。
【同一个文本为什么算出的 MD5 不一样?】通常是输入字节不同:字符集不同、末尾多了换行或空格、全角半角不同。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。