如果我从互联网下载了一个文件,并且源网站提供了校验和或哈希值(例如 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