MD5 是一种哈希(散列)算法,把任意长度的数据计算成固定 128 位(16 字节)的摘要,通常写成 32 位十六进制字符串。下面重点说明字节与字符对照。
MD5编码对照
| 输入 | 计算结果 |
|---|---|
| 123问 | b3ca70fa998003b1a9f145e50bb41c27 |
| 中文 | a7bac2239fcdcb3a067903d8077c4a07 |
| 你好,世界 | dbefd3ada018615b35588a01e216ae6e |
| a+b=c | c6d223eafd71470302a8b78e6d137648 |
| https://www.123wen.cn/?q=测试 | 3e0f68fa7fcffeedf5f965d7610873b5 |
| <b>粗体</b> | b0335f51ad2b1c8d2a27f2c45988b9bd |
| I ♥ Unicode | 94fb783d2b4fdbfe1b0f4e5ceb4d84c2 |
注意事项
- MD5 不是加密,所谓“MD5解密”网站只是在已知结果库中查表
- 计算前确认字符集和是否含换行:echo 默认会在末尾加换行
- 密码不要直接用 MD5 存储,应使用 bcrypt/Argon2 等慢哈希并加盐
- 2004 年王小云团队公布了实用的碰撞构造方法,现在普通电脑几秒即可构造碰撞
常见报错
- 结果与官方不一致:文件下载不完整或被篡改,也可能比对的是另一种算法
- 命令行结果与在线工具不同:echo 带了换行,改用 echo -n
- Java 结果少了前导 0:用 BigInteger 转十六进制时没有补齐,应用 String.format("%032x")
- NoSuchAlgorithmException:算法名写错,Java 中应为 "MD5"
本站的MD5计算器工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【MD5 是多少位?】128 位,即 16 字节,写成十六进制是 32 个字符。
【同一个文本为什么算出的 MD5 不一样?】通常是输入字节不同:字符集不同、末尾多了换行或空格、全角半角不同。
【MD5 还安全吗?】已不安全,只适合校验意外损坏,不能用于签名和密码存储。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。