MD5(Message-Digest Algorithm 5)把任意长度的输入压缩成一个 128 位(16 字节) 的散列值,通常写成 32 个十六进制字符。特点是不可逆、雪崩效应(改一个比特结果全变)、算得快。
结果与 PHP md5()、Python hashlib.md5()、Java MessageDigest.getInstance("MD5")(按 UTF-8 编码输入)一致。全部在浏览器本地计算,不上传。
MD5 已被攻破:能在很短时间里构造出两段不同内容却有相同 MD5 的数据(碰撞)。所以:
Q:MD5 能"解密"吗? A:不能。MD5 不可逆,没有"解密"。网上的"MD5 解密"是拿海量常见口令预先算好的 MD5 表来反查(彩虹表),只对弱口令有效。
Q:为什么中文的 MD5 和别人不一样? A:字符编码不同。本工具按 UTF-8。对方若用 GBK,同一个汉字的字节不同,MD5 自然不同。
Q:16 位和 32 位 MD5 是两种算法吗? A:不是。16 位就是 32 位结果里截取中间 16 个字符,信息量更少、碰撞更容易,能不用就不用。
Q:逐行模式会去掉行首尾空格吗? A:不会,逐行按原样计算每一行(不含换行符)。空行跳过。