MD5 是一种哈希(散列)算法,把任意长度的数据计算成固定 128 位(16 字节)的摘要,通常写成 32 位十六进制字符串。下面重点说明常见输入与输出对照。
MD5示例
| 输入 | 计算结果 |
|---|---|
| a+b=c | c6d223eafd71470302a8b78e6d137648 |
| 2026-11-11 | b703917e5499310fff6c94ac59a4b3c4 |
| 你好,世界 | dbefd3ada018615b35588a01e216ae6e |
| user@example.com | b58996c504c5638798eb6b511e6f49af |
| https://www.123wen.cn/?q=测试 | 3e0f68fa7fcffeedf5f965d7610873b5 |
| <b>粗体</b> | b0335f51ad2b1c8d2a27f2c45988b9bd |
中文的处理
中文先转成字节再计算。按 UTF-8,“中文”是 6 个字节,MD5 为 a7bac2239fcdcb3a067903d8077c4a07;按 GBK 是 4 个字节,结果为 bcce109775e8e1972e9f5fcda3e12895,两者完全不同。
Java 示例
下面是 Java 中处理MD5的常用写法:
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] d = md.digest("abc".getBytes(StandardCharsets.UTF_8));
String hex = String.format("%032x", new BigInteger(1, d));
// Java 17+: HexFormat.of().formatHex(d)运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的MD5计算器工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【MD5 是多少位?】128 位,即 16 字节,写成十六进制是 32 个字符。
【同一个文本为什么算出的 MD5 不一样?】通常是输入字节不同:字符集不同、末尾多了换行或空格、全角半角不同。
【MD5 还安全吗?】已不安全,只适合校验意外损坏,不能用于签名和密码存储。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。