如何在 FreeBSD 上检查哈希和文件?

Lin*_*eak 11 freebsd hashsum

情况

我在没有 GUI 的 FreeBSD 11.2 上。我是 BSD 系统的新手。

假设我们SHA512SUM在 FreeBSD 上生成了一个文件:

sha512 encrypt-file-aes256 decrypt-file-aes256 > SHA512SUM
Run Code Online (Sandbox Code Playgroud)

它看起来与 Linux 格式不同,Linux 格式可以使用--tagswitch生成:

SHA512 (encrypt-file-aes256) = 9170caaa45303d2e5f04c21732500980f3b06fc361018f953127506b56d3f2f46c95efdc291e160dd80e39b5304f327d83fe72c625ab5f31660db9c99dbfd017
SHA512 (decrypt-file-aes256) = 893693eec618542b0b95051952f9258824fe7004c360f8e6056a51638592510a704e27b707b9176febca655b7df581c9a6e2220b6511e8426c1501f6b2dd48a9
Run Code Online (Sandbox Code Playgroud)

我如何检查这个文件?手册页中没有--check选项。


进步

到目前为止,我只能通过硬编码哈希和来手动测试单个文件:

sha512 -c "9170caaa45303d2e5f04c21732500980f3b06fc361018f953127506b56d3f2f46c95efdc291e160dd80e39b5304f327d83fe72c625ab5f31660db9c99dbfd017" encrypt-file-aes256 && echo $?
Run Code Online (Sandbox Code Playgroud)

在脚本方面,我还没有看到SHA512SUM自动检查整个文件的方法。

请注意,在我的情况下,它可能包含比这两个文件更多的文件。

fil*_*den 13

您可以使用shasum手册页)工具,该工具具有-c检查校验和文件的选项,并且是包括SHA-512在内的多种校验和算法的前端。

您可以使用如下命令来检查这两个文件:

$ shasum -a 512 -c SHA512SUM.sha512sum
Run Code Online (Sandbox Code Playgroud)

shasum工具只能解析与由sha512sum(该工具通常在 Linux 发行版中提供)兼容的输出格式。

您可以使用简单的sed命令从 BSD 风格的校验和文件转换为 Linux 风格的文件:

$ sed -ne 's/^SHA512 (\(.*\)) = \(.*\)/\2  \1/p' SHA512SUM >SHA512SUM.sha512sum
Run Code Online (Sandbox Code Playgroud)

(虽然如果您自己生成校验和,那么也使用shasum来生成它们是一个不错的选择,也与 Linux 上的工具兼容。)

shasum工具由 FreeBSD 端口提供p5-Digest-SHA,可以pkg通过运行来安装:

$ sudo pkg install p5-Digest-SHA
Run Code Online (Sandbox Code Playgroud)