从 Linux 命令行仅生成 SHA-256 哈希

Generating just a SHA-256 hash from the Linux command line

我正在寻找一个命令,它发出只是 sha256 散列,作为一个提供的文件内容的十六进制数。

我知道 shasum -a 256openssl dgst -sha256sha256sum 等人。但它们都与校验和一起发出其他信息,我想避免需要 post-用 sed 或类似的方法处理结果。

下面的 perl 一行实际上似乎满足了我提出的所有要求:

perl -e 'use Digest::SHA;' -e 'use warnings;' -e 'use strict;' -e 'use autodie;' -e 'my $sha = Digest::SHA->new(256); open my $fh, $ARGV[0]; $sha->addfile($fh, "b"); print $sha->hexdigest . "\n";' "$file"

特别是它对于“有趣”的文件名是安全的,并且可以用于任意 shell 脚本,包括作为 find --exec 参数(这是我需要它的一件事)。

(很久没有用Perl写过,所以上面的内容可能会有所改进。)

您可以使用:

sh -c 'shasum < "" | cut -d" " -f1' -- "$file"