从 Linux 命令行仅生成 SHA-256 哈希
Generating just a SHA-256 hash from the Linux command line
我正在寻找一个命令,它发出只是 sha256 散列,作为一个提供的文件内容的十六进制数。
我知道 shasum -a 256
、openssl dgst -sha256
、sha256sum
等人。但它们都与校验和一起发出其他信息,我想避免需要 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"
我正在寻找一个命令,它发出只是 sha256 散列,作为一个提供的文件内容的十六进制数。
我知道 shasum -a 256
、openssl dgst -sha256
、sha256sum
等人。但它们都与校验和一起发出其他信息,我想避免需要 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"