先遵循协议,不是先挑最长结果
对方给的是 MD5 参考值,就计算 MD5,不能拿 SHA-256 与它比较。如果自己设计新的通用指纹流程,SHA-256 通常比 MD5 更合适,但普通摘要仍然不是身份认证机制。算法名称必须跟着结果一起保留。
| 对比项目 | MD5 | SHA-256 |
|---|---|---|
| 摘要长度 | 128 位 | 256 位 |
| 完整十六进制 | 32 个字符 | 64 个字符 |
| 普通摘要包含密钥吗 | 不包含 | 不包含 |
| 能否作为可逆加密使用 | 不能 | 不能 |
一致究竟说明什么
两个相同的计算结果,说明在当前输入和计算规则下数值一致,不能说明是谁提供了文件。如果文件和参考摘要都来自同一条已被控制的渠道,攻击者可以把二者一起替换。需要发布者真实性时,应使用可信渠道及对应的数字签名验证流程。
MD5 的碰撞弱点在对手有意构造不同内容时尤其重要。“平时检查复制文件够用”不是把 MD5 引入新签名格式的理由。不过,为历史接口复现其既定 MD5,仍然可以是明确的兼容性需求。
先比较相同字节
abc、abc 加换行、带 UTF-8 字节顺序标记的文件,是三种不同输入。压缩包的解压目录,也不是压缩包原始字节。重命名通常不影响摘要,重新构建或重新压缩却可能改变元数据和结果。
首页单条文本结果同时显示 MD5、SHA-256 和 SHA-512,标签用于区分算法,而应按标签选择需要核对的结果。核对文件时请选择发布者指定算法,并比较完整值,避免只看前几个字符。
消息认证与密码是不同任务
共享密钥认证应使用 HMAC 等定义明确的构造,不是临时把密钥与消息拼接。密码存储需要专用的密码哈希设计与恰当参数,不是把 MD5 换成长一些的快速摘要就算完成。校验工具也不是杀毒软件、签名验证器或恢复服务。
交付可用的核对信息
记录算法、完整结果和文件版本;可信参考值应与尚未验证的文件分开管理。本地导出可以保留标识和计算值,不默认包含私密原文或密钥。发生不匹配时,先排查参考来源及文件版本,再决定是否重新下载或联系发布者。