1. Linux 文件校验基础与准备
1.1 为什么要做文件校验
在下载软件、镜像和固件时,文件校验可以验证数据完整性,避免传输过程中的损坏或被篡改,确保最终获得的文件与官方发布的一致性。
常用的校验算法包括 MD5 与 SHA-256,它们分别生成固定长度的 哈希值,用于快速校验文件的内容是否发生变化。
1.2 安装与环境准备
大多数 Linux 发行版默认内置 md5sum 与 sha256sum,它们属于 coreutils 套件的一部分。可以使用 which 命令确认可执行文件路径。
which md5sum
which sha256sum
确保系统的 命令行工具 完整,才方便进行后续的校验流程,尤其是在下载镜像和发行包时的自动化校验。
2. md5sum 实战使用
2.1 直接计算单个文件的 MD5
直接对目标文件执行 md5sum,输出格式为“哈希值 文件名”,便于快速查看文件的一致性信息。
md5sum example.iso
输出中的前一段是 哈希值,后一段是对应的 文件名,如果已知原始哈希值,可用于快速核对。
md5sum example.iso | cut -d ' ' -f1
若只需要哈希值方便后续比对,可以通过 cut 或其他文本处理工具提取第一列。
在校验脚本或流水线中,这一步是最常见的入口,用于获得待比对的 MD5 摘要。
2.2 将 MD5 摘要写入文件并对比
将计算得到的 MD5 摘要保存到一个文本文件中,通常以 .md5 为后缀,格式通常是“<哈希值> 文件名”,便于后续批量校验。
md5sum example.iso > example.md5
之后使用 md5sum -c 对应的校验文件进行逐行比对,-c 表示对照文件逐行检查。
md5sum -c example.md5
如果校验通过,输出中会显示 OK,表示下载的文件未被篡改且未发生传输错误。
2.3 注意点:空格、换行与文件名中的空格
在处理包含空格的文件名时,确保校验文件中的行格式正确,或者使用 printf 等方式生成对齐的输出,避免解析错误,从而保障 批量校验的稳定性。
md5sum "my file with spaces.iso" | sed 's/ */ /g'
3. sha256sum 实战使用
3.1 计算单个文件的 SHA-256
与 MD5 的用法类似,sha256sum 用于生成更强碰撞抵抗性的摘要,输出仍为“哈希值 文件名”的格式,便于比对。
sha256sum example.iso
如需仅获取哈希值,仍可通过管道提取第一列进行后续比对。
sha256sum example.iso | cut -d ' ' -f1
3.2 通过文件校验数据进行批量验证
将 SHA-256 摘要保存为一个文本文件,如 example.sha256,每行包含一个哈希值和对应的文件名,便于批量校验。
sha256sum example.iso > example.sha256
使用 -c 选项对照文本逐行验证,确保分发的完整性。
sha256sum -c example.sha256
3.3 如何在下载后自动校验
在下载完成后,先获取官方提供的 SHA-256 校验值,再执行校验命令;若输出包含 OK,表示完整性无误。
wget -O downloaded.iso http://example.com/download.iso
sha256sum downloaded.iso
通过自动化脚本,可以将下载、计算、比对整合为一个稳定的流程,以提升在 镜像下载 与 固件更新 场景中的信任度。
4. md5sum 与 sha256sum 的对比与场景应用
4.1 安全性对比要点
MD5 在过去的研究中已被證明存在理论上的碰撞风险,适合轻量级校验或对安全性要求不高的场景;而 SHA-256 提供更强的安全性,推荐在需要较高可信度的分发中使用,以防止恶意篡改。

# MD5 校验的示例(不代表推荐做法)
md5sum -c <(echo "d41d8cd98f00b204e9800998ecf8427e emptyfile")
4.2 在同一目录中混合使用
在同一项目下,可以分别维护 md5sum 与 sha256sum 的校验列表,以覆盖不同的校验需求,并确保下载源的完整性。
# 生成两个校验文件
md5sum * > checks.md5
sha256sum * > checks.sha256# 分别验证
md5sum -c checks.md5
sha256sum -c checks.sha256


