重要前提:MD5 已被证明不安全,存在碰撞漏洞,不能用于防篡改、数字签名、身份认证等安全场景,仅适合做快速摘要、非安全校验。
1. 文件完整性校验(最经典)
计算文件 MD5 值,对比官方给出的摘要,用来判断文件是否下载完整,不是用来防恶意篡改。
场景:镜像包、压缩包、固件下载站提供 MD5 哈希
局限:攻击者可以构造两个不同文件拥有相同 MD5,所以不能对抗恶意修改
2. 数据库密码旧方案(⚠️强烈不推荐)
早年很多系统直接把用户密码做 MD5 存入数据库,登录时计算输入密码 MD5 和库内对比。
缺点:彩虹表、碰撞很容易破解;现在规范做法:bcrypt / Argon2 / PBKDF2 + 随机盐,严禁裸 MD5 存密码。

3. 内容去重、快速标识
对文本、图片、数据记录计算 MD5,作为简易指纹,快速判断两份内容是否一样:
网盘、文档系统、日志系统做重复数据检测
爬虫:对网页内容计算 MD5,判断页面是否更新
注意:只做业务层快速去重,安全场景不能依赖。
4. 分片 / 数据块摘要、缓存 Key 生成
大文件分片上传:每片算 MD5,用来判断分片是否上传重复
缓存系统:把长参数、长 URL 做 MD5,缩短 key 长度(仅做标识,不是安全用途)
5. 数字取证、文件唯一标识(辅助)
取证工具会计算文件 MD5,作为文件的摘要记录,仅作为取证记录中的一个参考值,现代取证一般会同时搭配 SHA256。
6. 旧协议 / 遗留系统兼容
很多老接口、老硬件、老旧第三方系统只支持 MD5:
老旧接口签名(现在安全改造都会换成 SHA256)
老固件、嵌入式设备校验
MD5 不适合做什么(重点)
❌ 不能做防篡改校验(恶意碰撞可行) ❌ 不能做密码哈希存储 ❌ 不能做数字签名 ❌ 不能做证书、可信校验
安全场景替代:SHA-256、SHA3;密码存储:Argon2id、bcrypt。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢