计算实际文件,而不是文件名
路径包含空格时使用引号。双连字符表示命令选项结束,避免以连字符开头的名称被误当成参数。命令读取的是文件字节,不是文件名文字;仅重命名一般不会改变内容摘要。
md5sum -- 'example.zip'
输出通常同时包含摘要与文件名标记。浏览器预期值框只需要其中 32 个十六进制字符。md5sum 清单有专门的格式,不能整行当作单个摘要粘贴,也不要省略开头的零或尾部字符。
使用可信校验清单
先确认清单来源及列出的路径,在与这些相对路径对应的目录执行检查。清单本身能被读取,不代表它来自真正的发布者;文件与参考值的可信来源仍需另外核查。
md5sum --check checksums.md5
阅读全部诊断信息和退出状态。找不到文件、没有读取权限,与已经读完但摘要不同,是不同问题。成功检查只表示计算结果与清单一致,不表示扫描过病毒,也不验证清单发布者身份。
重现不含结尾换行的 abc
printf 可以明确输出所需字节,不附加 echo 常见的结尾换行。不同 shell 的 echo 选项和转义行为可能不同,因此用 printf 做可控样本更清楚。
printf '%s' 'abc' | md5sum
预期 MD5 为 900150983cd24fb0d6963f7d28e17f72。若 abc 后面还有一个换行,得到不同值是正常的。本工具文本模式保留输入;验证磁盘上的实际文件时,应使用文件模式,避免编辑器或复制过程改变字节。
逐行批量不是文件清单校验
给整个文本文件计算一次摘要,与每行分别计算并不相同。浏览器逐行模式将换行用作记录分隔,保留原始行号,并允许明确包含空行。清单则是把已经生成的摘要关联到路径。下载的 CSV 有 CSV 引号规则,不能直接当成 md5sum 清单。
遇到特殊文件名,应保留工具生成的清单格式,不要凭肉眼重新拼接。发布者提供 SHA-256 时,使用 sha256sum 和对应参考值;算法变化不是简单的显示长度变化。
留下可复核记录
记录完整摘要、算法、文件版本和参考来源。MD5 可以用于旧系统兼容性检查及意外变更排查,但不适用于要求抗碰撞的安全设计。计算准确和来源可信,是必须分开判断的两件事。