Linux 文件完整性校验:使用 SHA-256 检查文件是否被修改

举报
AiGuoHou 发表于 2026/10/16 13:50:30 2026/10/16
【摘要】 下载软件包或传输文件后,如何判断文件是否完整?本文介绍 Linux 下使用 sha256sum 计算 SHA-256 摘要、对比校验值以及生成和验证校验清单的方法,并说明其适用范围与安全注意事项。

一、为什么需要文件完整性校验?

在日常开发和运维工作中,我们经常需要下载软件包、传输备份文件,或者将构建产物上传到服务器。这些文件在传输、存储或处理过程中,可能因为网络异常、磁盘故障或其他原因发生变化。

如何快速判断文件是否与预期一致?

一种简单实用的方法是计算文件的 SHA-256 摘要,再与可信来源提供的摘要进行比较。

SHA-256 属于 SHA-2 密码学哈希算法,输出固定为 256 位,也就是通常显示的 64 个十六进制字符。即使输入文件大小不同,摘要长度也保持不变。

需要注意:哈希值一致可以帮助确认文件内容一致,但不能单独证明文件来源可信。 如果攻击者同时替换了文件和校验值,简单比较仍可能得到一致的结果。

本文以常见的 Linux GNU Coreutils 环境为例进行说明。

二、计算文件的 SHA-256 摘要

假设下载目录中有一个文件:

app.tar.gz

在终端执行:

sha256sum app.tar.gz

命令会输出类似下面的格式:

<64位十六进制摘要>  app.tar.gz

上面的摘要仅用于展示输出格式,并非某个真实文件的校验结果。

其中:

  • 第一列是文件内容对应的 SHA-256 摘要。
  • 第二列是文件名。
  • 如果文件内容发生变化,计算得到的摘要通常也会发生变化。

如果系统提示 sha256sum: command not found,可以先检查当前系统是否提供该工具:

command -v sha256sum

在使用 GNU Coreutils 的系统中,sha256sum 通常由 Coreutils 软件包提供。其他系统或精简环境可能需要安装相应的软件包,具体安装方式应以当前发行版的官方文档为准。

三、与可信来源提供的校验值进行比较

这是下载软件包后最重要的一步。

假设软件发布方在其官方网站提供了文件的 SHA-256 摘要。先计算本地文件的摘要:

sha256sum app.tar.gz

然后将输出的摘要与官方公布的摘要逐字符比较。

  • 完全一致:文件内容与该摘要对应的内容一致。
  • 不一致:文件可能已损坏、被替换,或者比较的并非同一版本的文件。

不要只因为文件来自 HTTPS 下载链接,就跳过校验。 对重要软件,应优先使用官方发布页面提供的校验信息;如果官方同时提供数字签名,应按照官方说明验证签名。

四、生成校验清单,方便以后重复验证

当需要检查多个文件,或者希望在传输前后比较文件内容时,可以使用校验清单。

首先,在文件所在目录执行:

sha256sum app.tar.gz > SHA256SUMS

这会将命令输出写入 SHA256SUMS 文件。

之后,可以使用以下命令检查文件:

sha256sum -c SHA256SUMS

如果文件存在且摘要匹配,通常会看到类似输出:

app.tar.gz: OK

如果文件缺失、无法读取或摘要不匹配,校验会报告相应问题,并以非零状态码结束。

这里有两个注意事项:

  1. 默认情况下,清单中的文件路径是相对于执行校验时的工作目录解析的。应在正确目录执行命令,或者确保清单中的路径正确。
  2. 清单应由可信来源提供,或保存在可信的位置。如果清单与待检查文件一起被不可信的人修改,就不能仅凭校验成功判断文件安全。

五、常见问题

1. 为什么同一个文件的 SHA-256 值会发生变化?

SHA-256 根据文件内容计算摘要。如果文件内容被修改,即使只是增加或删除少量数据,计算出的摘要通常也会不同。

如果你认为文件没有变化,可以检查是否比较了同一文件、同一版本,以及是否下载完整。

2. SHA-256 校验成功,是否说明软件没有病毒?

不是。

SHA-256 主要用于比较内容是否与预期一致。如果使用的是可信发布方提供的正确校验值,可以帮助发现文件被意外修改或替换的情况。

但它不等于恶意软件检测,也不能证明文件本身没有漏洞。仍然需要从可信来源获取软件,并遵循相应的安全检查流程。

3. 能否把 SHA-256 摘要直接当作密码或数字签名?

不能混为一谈。

普通哈希摘要不包含密钥,也不能代替数字签名。需要验证发布者身份时,应使用可信的数字签名机制,并按照发布方提供的步骤验证公钥和签名。

六、总结

Linux 中使用 sha256sum 检查文件完整性非常方便,常用命令只有三条:

# 计算单个文件的摘要
sha256sum app.tar.gz

# 保存文件的校验清单
sha256sum app.tar.gz > SHA256SUMS

# 根据清单检查文件
sha256sum -c SHA256SUMS

在软件分发、文件备份和跨服务器传输等场景中,养成校验文件摘要的习惯,可以帮助我们更早发现文件内容不一致的问题。

最后记住:校验值是否可信,取决于它的来源是否可信。 对重要的软件和系统文件,应结合官方发布信息、数字签名及其他安全措施进行验证。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。