校验成败关键在校验文件格式、路径和换行符;需用 md5sum -b 生成清单,确保路径匹配、lf 换行符、文件可读;安全场景应改用 sha256sum。

直接用 md5sum -c 命令校验,但成败关键不在命令本身,而在校验文件格式、路径和换行符这三处细节。
生成标准校验清单(必须带 -b 选项)
别用 md5sum *.jar > checksums.md5 这种默认方式——它按文本模式读取,遇到 Windows 编辑过的文件或含特殊换行符的内容容易出错。正确做法是:
- 进入目标文件所在目录,运行:
md5sum -b *.jar > checksums.md5 -
-b强制二进制模式,规避换行符干扰,输出格式也更稳定 - 文件名含空格?加引号:
md5sum -b "my app.jar" "config file.xml" > checksums.md5
执行校验前先检查环境一致性
校验失败多数不是哈希错了,而是“找不到文件”或“读不了文件”。重点确认以下三点:
-
路径必须完全匹配:清单里写的是
./app.jar,你就得在该目录下运行md5sum -c checksums.md5;如果当前在上层目录,就报No such file or directory -
换行符必须是 LF:Windows 编辑过或从 Windows 传来的
.md5文件,大概率含\r\n。运行dos2unix checksums.md5再校验 -
文件要有读权限:
ls -l app.jar看是否可读;权限不足时不会提示Permission denied,只会显示FAILED
校验时控制输出与结果判断
默认输出每行都带 OK 或 FAILED,信息冗余。可根据需要调整:
- 只看异常项(跳过成功提示):
md5sum -c --quiet checksums.md5 - 脚本中判断成败(不打印任何内容):
md5sum -c --status checksums.md5,成功返回 0,失败返回 1 - 发现格式可疑行(比如手动生成的清单混入空格或不可见字符):
md5sum -c -w checksums.md5,会额外警告
安全场景请改用 sha256sum
MD5 已被证实可构造碰撞,不适用于防篡改、签名、权限控制等安全敏感用途:
- 生成更强校验值:
sha256sum -b *.jar > checksums.sha256 - 校验方式完全一致:
sha256sum -c checksums.sha256 - 输出是 64 位哈希,抗碰撞能力远高于 MD5,且命令参数、路径要求、换行符处理逻辑全部相同











