MD5 相关知识
01 什么是 MD5?
MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生出一个 128 位(16 字节)的散列值(Hash Value),通常用一个 32 位的十六进制数字表示。
主要特点:
- 不可逆性:不能通过哈希值还原出原始信息。
- 确定性:只要输入相同,输出的哈希值永远相同。
- 定长输出:无论输入多长,输出都是 32 个字符。
02 工作原理
MD5 算法将输入信息以 512 位为一组进行分组处理,经过四轮复杂的逻辑运算(包括与、或、非、异或、循环左移等),最终生成一个固定的摘要信息。
"hello"
5d41402abc4b2a76b9719d911017c592
03 应用场景
密码存储
数据库通常存储加盐的 MD5 散列值而非明文密码。
文件完整性校验
验证下载的文件是否被篡改或损坏。
数字签名
用于确认数据的真实性。
内容变更检测
检测内容哪怕最微小的变化。
常见问题
MD5 是加密还是编码?
准确来说,MD5
是一种摘要(Digest)算法或散列(Hash)算法,不能被称为“加密”(Encryption)和“编码”(Encoding)。因为加密通常意味着可以解密,编码通常意味着可以解码,而
MD5 是不可逆的。
MD5 值可以被解密吗?
从算法原理上无法解密。但对于简单的密码(如 "123456"),黑客可以通过“彩虹表”或“暴力撞库”的方式查找到对应的原文。因此建议使用更复杂的密码或加盐(Salt)处理。
为什么有时候 MD5 是16位的?
标准的 MD5 是 32 位的(128位数据用32个十六进制字符表示)。所谓的“16位 MD5”其实就是截取了标准 32 位 MD5 的中间 16 位字符(第 9 到 24
位),本质上是同一种算法。
本工具生成的 MD5 大小写有关吗?
MD5 值本身是 128 位二进制数,用十六进制表示时,字母 a-f 的大小写不影响其数值本身。不过通常习惯上使用小写。本工具提供切换选项。
输入中文会乱码吗?
本工具会先将中文转换为标准的 UTF-8 编码,然后再计算 MD5,这符合大多数现代系统(如 PHP, Java, Node.js)的标准做法,确保结果一致。
MD5 还安全吗?
对于高安全性要求的场景(如 SSL 证书、顶级机密防护),MD5 已不再被推荐,因为它存在碰撞漏洞。建议使用 SHA-256。但对于普通的文件校验、简单的完整性验证,MD5
依然非常高效且够用。
数据会上传到服务器吗?
绝对不会。本工具的所有计算都在您的浏览器本地通过 JavaScript 完成,您的敏感信息(如密码)永远不会离开您的设备。
如何校验下载的文件?
本工具目前仅支持文本 Hash。如果要校验文件,请使用支持“文件上传”或“本地读取”的专用文件哈希工具(考虑到浏览器性能,大文件计算通常需要专门的软件)。