侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux sha256sum命令教程:如何验证文件完整性(附实例详解和注意事项)

在Linux系统中,sha256sum命令用于计算和校验文件的SHA256哈希值。这是一种安全性极高的散列算法,常用于验证文件的完整性,以确保文件在传输过程中未被篡改。

Linux sha256sum命令介绍

sha256sum(Secure Hash Algorithm 256)是一个用于计算和验证256位(即32字节)SHA2哈希值的命令。这个命令对于软件分发、文件传输验证以及一般的数据完整性确认非常重要。

Linux sha256sum命令适用的Linux版本

sha256sum命令几乎在所有的Linux发行版中都是可用的,因为它包含在coreutils包中,这个包是大多数Linux发行版的标准组件。以下是在不同发行版中安装coreutils的命令:

# 基于apt的发行版(如Debian、Ubuntu、Raspbian、Kali Linux等)
sudo apt-get update && sudo apt-get install coreutils

# 基于yum的发行版(如RedHat,CentOS 7等)
sudo yum update && sudo yum install coreutils

# 基于dnf的发行版(如Fedora,CentOS 8等)
sudo dnf update && sudo dnf install coreutils

# 基于apk的发行版(如Alpine Linux)
sudo apk add coreutils

# 基于pacman的发行版(如Arch Linux)
sudo pacman -Syu coreutils

# 基于zypper的发行版(如openSUSE)
sudo zypper ref && sudo zypper in coreutils

# 基于pkg的FreeBSD发行版
sudo pkg update && sudo pkg install coreutils

# 基于Homebrew的OS X/macOS发行版
brew update && brew install coreutils

Linux sha256sum命令的基本语法

语法格式:

sha256sum [选项]... [文件]...

Linux sha256sum命令的常用选项或参数说明

选项描述
-b, --binary读取二进制文件模式
-c, --check读取SHA256和校验值,并检查是否匹配
--ignore-missing在校验模式下,忽略不存在的文件
--quiet在校验模式下,不输出成功的校验信息
--status在校验模式下,不输出任何信息,状态码表示成功与否
--strict校验时,如果有任何格式错误,则退出
-t, --text读取文本文件模式(默认)
--help显示帮助信息并退出
--version显示版本信息并退出

Linux sha256sum命令实例详解

实例1:计算单个文件的SHA256值

这个实例展示了如何计算一个文件的SHA256哈希值。

[linux@bashcommandnotfound.cn ~]$ sha256sum filename.tar.gz

实例2:校验文件的SHA256值

如果你有一个文件和它的SHA256校验和,你可以使用以下命令来验证文件的完整性。

[linux@bashcommandnotfound.cn ~]$ sha256sum -c filename.sha256sum

其中,filename.sha256sum文件包含了原始文件的SHA256哈希值。

实例3:对多个文件计算SHA256值

可以一次对多个文件计算SHA256值,如下所示:

[linux@bashcommandnotfound.cn ~]$ sha256sum file1.txt file2.txt file3.txt

实例4:将计算结果输出到文件

将多个文件的SHA256校验和输出到一个文件中,后可以使用重定向符号 >

sha256sum file1.txt file2.txt file3.txt > checksums.sha256

这将会创建一个名为 checksums.sha256 的文件,其中包含了前面提到的三个文件的SHA256校验和。

实例5:在脚本中静默校验文件完整性

如果你在编写一个自动化脚本,可能希望校验文件但不输出任何信息,只通过状态码来判断:

sha256sum -c --status checksums.sha256
if [ $? -eq 0 ]; then
    echo "验证通过: 所有文件都是完整的。"
else
    echo "验证失败: 文件可能已被篡改。"
fi

实例6:计算字符串的SHA256值

你可以使用 echo 命令和管道来计算一个字符串的SHA256哈希值。注意使用 -n 以避免 echo 命令在输出中包含换行符。

echo -n "Hello, World!" | sha256sum

实例7:检查多个文件的SHA256值

如果你有一个包含多个文件SHA256校验和的文件,可以一次性校验所有文件。

sha256sum -c checksums.sha256

这里 checksums.sha256 文件中应包含多行,每行格式为 <hash> <space> <filename>

实例8:从标准输入读取内容计算SHA256值

可以使用 - 代表标准输入,来计算通过管道传递的数据的SHA256值。

cat filename.tar.gz | sha256sum -

实例9:递归计算目录中所有文件的SHA256值

可以配合 find 命令和 xargs 命令来递归地计算一个目录中所有文件的SHA256值。

find . -type f -exec sha256sum {} +

或者

find . -type f -print0 | xargs -0 sha256sum

实例10:创建一个校验和文件并验证它

首先,计算一组文件的校验和并保存到一个文件中:

sha256sum file1.txt file2.txt file3.txt > checksums.sha256

然后,你可以使用该文件来验证文件后续是否保持未更改:

sha256sum -c checksums.sha256

实例11:忽略校验和文件中的缺失文件

在校验时,如果某些文件不在目录中,你可能希望忽略这些缺失的文件而不是中断校验过程。

sha256sum -c --ignore-missing checksums.sha256

实例12:在校验时忽略成功消息

如果你只对检查失败的文件感兴趣,可以使用 --quiet 选项来隐藏成功的校验信息。

sha256sum -c --quiet checksums.sha256

实例13:仅输出不匹配的文件名

如果你想要一个只包含校验失败文件名的列表,可以结合使用 --quietawk

sha256sum -c checksums.sha256 --quiet | awk '/FAILED/{print $2}'

注意事项

  • 在使用 sha256sum 命令时,确保从可信来源获取SHA256校验和。
  • 如果你正在编写脚本,确保正确处理错误状态码。
  • sha256sum -c 命令期望校验和文件中每行格式为 <hash> <space> <filename>。如果文件格式不正确,命令将失败。
  • 安全性至关重要时,考虑使用更高级的工具,如GPG签名,来验证文件的完整性。
0

评论区