如何在命令行上验证下载文件的校验和或哈希?

如何在命令行上验证下载文件的校验和或哈希?

如果我从互联网下载了一个文件,并且源网站提供了校验和或哈希值(例如 SHA-256),我如何验证下载文件的哈希值是否与网站上报告的哈希值匹配?

例如,我下载了一个文件,网站指出该文件的 SHA-256 哈希值是:

d9cd63f187db2daea1371289508c63a7a24c46316f15ac61f030a7d6ea423915

我确实知道如何使用以下命令创建下载文件的 SHA-256 哈希值:

shasum -a 256 /path/to/downloaded.pkg

但是,我不想手动检查哈希值,也称为目击检查。相反,我想使用类似的命令来比较两个哈希值diff,最好是通过执行单个命令行。

我运行的是 MacOS Catalina 10.15.4,shell 是 zsh。

答案1

一种解决方案是使用diff比较两个哈希的字符串。幸运的是,这可以在单个命令行条目中完成,如下所示:

diff -is <(echo "d9cd63f187db2daea1371289508c63a7a24c46316f15ac61f030a7d6ea423915  /path/to/downloaded.pkg") <(shasum -a 256 /path/to/downloaded.pkg)

重要提示:必须有术语第一部分中的哈希值与下载文件的路径之间存在空格。

这个答案的部分内容存在于不同的地方,但尽管进行了热心的搜索,我还没有发现它被放在任何地方。如果有更好的选择,我很乐意听到。

答案2

以 sha256 校验和为例,如果您下载的文件附带一个伴随文件,您可以从包含的目录中<filename>.256使用。sha256sum -c <filename>.256您应该得到以下输出:

<filename>: OK

相关内容