什么是MD5加密?MD5哈希值有什么用?
MD5(Message-Digest Algorithm 5,消息摘要算法第五版)是由密码学家罗纳德·李维斯特于1991年设计的一种广泛使用的哈希函数。它可以将任意长度的输入信息转换为固定长度128位(32个十六进制字符)的哈希值,这个过程是不可逆的单向加密。
MD5最重要的特性是雪崩效应:哪怕只改动原文的一个字符,生成的MD5值也会发生天翻地覆的变化。这使得MD5在文件完整性校验、密码存储加盐、数据库唯一标识等场景中长期被使用。本工具完全在浏览器本地运行MD5算法,您输入的内容不会发送到任何服务器。
MD5的常见应用场景
- 文件完整性校验:下载文件后对比官方公布的MD5值,确认文件未被篡改
- 密码摘要存储:网站将用户密码的MD5值(通常加盐)存入数据库而非明文
- 数据库主键/去重:对长文本取MD5作为短标识,用于判断内容是否重复
- 缓存键生成:将请求参数拼接后取MD5作为缓存Key
- 数字签名辅助:早期协议中配合密钥使用(现在推荐更安全的SHA-256)
32位与16位MD5的区别
标准的MD5值是32位十六进制字符串(128位二进制)。16位MD5通常是取32位MD5的第9到24位字符(中间16位),一些老系统出于长度考虑使用这种截断形式。本工具同时输出32位大写、32位小写和16位小写三种形式,方便不同系统的对接需求。
常见问题解答(FAQ)
Q: MD5加密后可以解密还原吗?
MD5是单向哈希,数学上不可逆。网上所谓的MD5解密网站本质是彩虹表查询——预先存储海量"原文→MD5"的对照表进行反查。简单常见字符串可能被反查出来,但加上随机盐后就很难破解。
Q: 为什么同样的内容每次生成的MD5都一样?
这正是MD5的特性:相同输入永远得到相同输出,因此才能用作数据一致性校验。如果需要每次不同,应使用加盐或UUID等随机标识。
Q: MD5还安全吗?能继续用于密码存储吗?
MD5算法本身已被证实存在碰撞漏洞,不建议单独用于高安全场景。生产环境的密码存储推荐使用bcrypt、scrypt或Argon2等慢哈希算法。MD5更适合文件校验等非对抗性场景。
Q: 批量转换有什么限制吗?
每行文本独立计算一个MD5值,浏览器本地运算速度极快,数百行也能瞬间完成。
Q: 中文内容的MD5以什么编码计算?
本工具按UTF-8编码计算,这也是大多数系统(如Linux md5sum)的默认方式。注意与GBK编码计算的MD5结果不同。