sha256sum 是什么
sha256sum 属于 GNU coreutils,计算文件的 SHA-256 摘要并输出 64 位十六进制字符串。摘要把任意长度的输入压成固定长度,修改 1 个字节输出就完全不同,因此它能回答两个问题:下载或传输的文件是否完整,以及文件是否被人改动过。要分清能力边界:摘要本身不可逆,也不带任何密钥,它证明的是「与记录的那份一致」,而不是「来源可信」。防篡改需要摘要配合官方签名(gpg)或可信的 HTTPS 渠道一起用。
基本信息
| 适用平台 | Linux 全发行版(coreutils 自带);Windows 用 certutil -hashfile,macOS 用 shasum -a 256 |
|---|---|
| 命令语法 | sha256sum [选项] 文件... ;校验模式 sha256sum -c 清单文件 |
| 常用选项 | -c 按清单校验 -b 二进制模式读取 --tag 生成 BSD 风格输出 --ignore-missing 忽略清单里缺失的文件 --quiet 只打印失败项 |
| 同族工具 | md5sum / sha1sum / sha512sum / b2sum(BLAKE2,比 SHA-256 更快) |
| 权限说明 | 无特殊要求,读得到即可;校验系统文件或 root 目录内容用 sudo |
典型使用场景
- 下载包校验:把官方发布的 SHA256SUMS 与实际下载文件比对,确认中间没有损坏或被替换
- 备份一致性:备份完成后重算摘要,与源目录对照证明数据一致
- 发布清单:包目录内生成 SHA256SUMS 随包分发,接收方一条命令批量核对
- 变更核对:发布前记录关键文件摘要,上线后重算对比,确认没被误改
- 应急取证:可疑文件先固定摘要,为后续分析留下不可否认的凭据
常用示例
常用示例
sha256sum app-v1.2.tar.gz # 单个文件
sha256sum *.tar.gz > SHA256SUMS # 生成清单
sha256sum -c SHA256SUMS # 按清单批量核对
echo '<官方摘要> app.tar.gz' | sha256sum -c - # 直接比对官方值
sha256sum -c --ignore-missing SHA256SUMS # 只校验存在的文件
find /srv/pkg -type f -exec sha256sum {} + > all.sha256 # 目录级清单
ssh user@host sha256sum /data/db.tar.gz # 远端算摘要,避免大文件来回传校验结果读法
| 输出 | 含义 | 怎么看 |
|---|---|---|
| 文件名: OK | 摘要与清单记录一致 | 文件完整,未发现改动 |
| 文件名: FAILED | 摘要不符 | 下载损坏、清单版本不对或被篡改,需重新获取 |
| 警告行 no properly formatted... | 清单格式无法解析 | 常见于手工编辑过清单或用了 BSD --tag 格式而校验端不认 |
| 退出码 0 / 1 | 0 全部通过,1 存在失败 | 脚本里用 if sha256sum -c SHA256SUMS 判断,别去解析文本 |
校验清单里的路径是相对当前目录的:先 cd 到文件所在目录再执行 -c,否则会报找不到文件;清单里的路径名不要改成解压后的名字。
摘要只保证「与记录一致」,不保证来源可信。防御性场景必须走官方签名:gpg --verify 校验摘要文件的签名,或从 HTTPS 官方页面交叉核对摘要值,只从下载站复制摘要等于把锁和钥匙放在一起。