Contents

从命令行生成SHA-256哈希

1. 概述

SHA-256 标准 用于文档完整性检查。它优于SHA-1 标准,因为后者已被证明可以为不同的文档生成相同的散列。

在本教程中,我们将使用*sha256sum * 命令查看SHA-256 哈希生成 。

2. 为文件生成 SHA-256 哈希

我们可以在两种模式下使用sha256sum命令;二进制和文本(默认)。在 Linux 上,两种模式都生成相同的 SHA-256 哈希,因此本教程通篇使用默认模式。

让我们创建一个包含一些简单文本的文本文件,并用它来演示命令的工作原理:

echo "https://blogdemo.com" > data.txt

现在让我们创建上述文件的 sha-256 哈希值

sha256sum data.txt 
86c5ceb27e1bf441130299c0209e5f35b88089f62c06b2b09d65772274f12057 data.txt

此生成的输出包括:

  • 哈希和——前 65 个字符
  • 空间
  • 星号(仅在二进制模式下)
  • 文件的路径或只是文件的名称

我们还可以为目录中的文件生成哈希

sha256sum /path/to/data.txt > checksum
cat checksum 
86c5ceb27e1bf441130299c0209e5f35b88089f62c06b2b09d65772274f12057 /path/to/data.txt​

3.验证文件完整性

让我们使用存储在校验和文件中的散列来验证我们散列的data.txt文件的 完整性:

sha256sum --check checksum
data.txt: OK

接下来我们修改data.txt中包含的信息来模拟一个失败的测试。我们将使用sed 命令将“https”替换为“http”:

sed -i 's/https/http/' data.txt

最后,我们再次检查文件的完整性:

sha256sum --check checksum
data.txt: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

3.1. 处理多个文件

让我们在另一个文件的校验和文件中添加另一个条目。我们将通过向新文件添加简单文本、为该新文件生成摘要并将其附加到校验和文件来完成此操作:

echo "https://google.com" > data2.txt
sha256sum data2.txt >> checksum

如果现在我们对校验和文件中的所有条目进行完整性测试,它会处理每个条目,告诉我们哪些文件未通过测试,哪些通过:

sha256sum --check checksum
data.txt: FAILED
data2.txt: OK
sha256sum: WARNING: 1 computed checksum did NOT match