MD5加密

在线MD5加密工具,支持32位和16位加密

关于MD5加密

MD5 是 1992 年发布的摘要算法,标准编号 RFC 1321,把任意长度输入压成固定 128 位、即 32 个十六进制字符。它是指纹而非加密:单向、无密钥、不可逆,同样输入永远得到同样结果,适合做校验和、签名与缓存键。需要说明的是 MD5 已被证明存在实用碰撞(王小云团队 2004 年给出高效构造方法),且 GPU 每秒可试数十亿次,裸 MD5 存密码几乎没有保护作用,新项目应换 bcrypt、scrypt 或 Argon2。所谓“16 位 MD5”并非另一种算法,只是截取 32 位结果的中间 16 个字符。

MD5加密怎么用

  1. 在输入框粘贴或键入待计算的内容,注意首尾空格与字母大小写都会改变摘要结果。
  2. 确认字符集为 UTF-8;对接老系统、需要按 GBK 处理中文时先切换再计算。
  3. 读取输出的 32 位小写十六进制摘要,按需切换为大写,多数签名校验不区分大小写。
  4. 老系统要求 16 位格式时,用 16 位选项取出中间那段字符串,逐字符核对签名。
  5. 把结果复制到接口签名参数、缓存键或校验记录里,并与对接方文档确认编码与大小写约定。

使用提示

  • “16 位 MD5”取的是 32 位值第 9 到第 24 个字符,是截取而不是更弱的算法,安全性没有任何差别,别以为位数少反而更安全。
  • 编码不一致是最常见的坑:同一段中文按 UTF-8 和 GBK 算出的 MD5 完全不同,本地算出结果和服务端对不上时先查这一项。
  • 算文件摘要前先统一换行符,Windows 记事本保存的 CRLF 与 Linux 的 LF 会让同一个文件得到不同 MD5,跨平台校验要先规范化。

MD5加密常见问题

MD5 还能用来加密密码吗?
不建议。MD5 无盐、速度快,GPU 上每秒可算几十亿次,配上彩虹表能秒破常见口令,而且早就具备实用碰撞能力。存密码应当用带盐、计算代价可调的 bcrypt、scrypt 或 Argon2,MD5 只适合做校验和与缓存键。
为什么同一段文字算两次结果不一样?
正常情况下一定一样。出现差异通常是输入里混入了不可见字符,比如空格、Tab、换行或 BOM 头;也可能是两次使用了不同字符集,或者复制时大小写、标点被改动。把内容转成十六进制逐字节比对就能定位。
MD5 加密能解密吗?
不能,设计上就是单向函数,没有密钥也没有逆运算。网上所谓的 MD5 解密其实是查表:把常见口令预先算好存进字典反查,查不到就算不出来。同一个摘要理论上对应无穷多个原像,所以还原出来的未必是你原来的输入。
MD5 和 SHA-256 该选哪个?
新的完整性与签名场景直接选 SHA-256 或 SHA-512,目前没有实用碰撞,输出更长也更安全。只有当对接方协议明确规定使用 MD5 时才继续用,比如部分老支付接口的签名参数,那属于兼容需求而不是安全选择。