为什么使用“sha256sum”验证 SHA256 校验和在 Debian 上失败而在 Ubuntu 上工作?

为什么使用“sha256sum”验证 SHA256 校验和在 Debian 上失败而在 Ubuntu 上工作?

在 Ubuntu 14.04 上,sha256sum效果coreutils如我所料:

echo 879dd0d7637876be4796f7e6f194a111d21088be85cfe717fc97e2e7f05e79d2 /tmp/myfile | sha256sum -c
/tmp/myfile: OK

然而,在 Debian Wheezy 上使用完全相同的文件执行完全相同的命令会失败:

sha256sum: standard input: no properly formatted SHA256 checksum lines found

我不明白这一点。如何在 Debian 上的 shell 脚本中可靠地验证校验和?


在 Ubuntu 14.04 上:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

关于喘息:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

两个操作系统上的联机帮助页均显示:

SYNOPSIS
       sha256sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check SHA256 (256-bit) checksums.  With no FILE,
       or when FILE is -, read standard input.

[...]

       -c, --check
              read SHA256 sums from the FILEs and check them

答案1

它关心间距。如果你运行:

sha256sum /dev/null

你得到

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(两个空格)。当你echo这样使用时,单词之间只有一个空格。

8.13 版本想要精确的其输出的格式。如果您使用:

echo "$SUM  $FILE" | sha256sum -c

(再次,两个空格)它应该可以工作。较新的版本不关心有多少空格,因此它也适用于它们。

相关内容