🔏

CLIでもSHA-3チェックサムの計算がしたい!

2024/05/13に公開

MD5やSHA-2の場合はmd5sumsha256sumなどのチェックサムを計算するコマンドがデフォルトでインストールされますが、SHA-3(Keccak)の場合は似たようなコマンドがデフォルトでインストールされることは少ないと思います。
そこで、この目的に使用できるコマンドについて調べてみました。

OpenSSL/LibreSSL

OpenSSL 1.1.1以降とLibreSSL 3.8.0以降はSHA-3をサポートしています。

OpenSSL Repology

Packaging status

LibreSSL Repology

Packaging status

openssl dgstコマンドによってチェックサムを計算でき、-rオプションを追加することでcoreutilsのフォーマットで出力できます。
SHA-3チェックサムを計算するには-sha3-{224,256,384,512}オプションを追加します。

$ echo "Hello, world!" > foo.txt
$ openssl dgst -sha3-256 -r foo.txt
ae6802d17c07cbe2b677c46decd5c2c28a4a585fedcb813ad8e7cb1469782773 *foo.txt

RHash

RHashはバージョン1.3.0からSHA-3をサポートしています。

Repology

Packaging status

SHA-3チェックサムを計算するには--sha3-{224,256,384,512}オプションを追加します。

$ echo "Hello, world!" > foo.txt
$ rhash --sha3-256 foo.txt | tee sha3-256sums.txt
ae6802d17c07cbe2b677c46decd5c2c28a4a585fedcb813ad8e7cb1469782773  foo.txt

検証するには-cオプションを追加します。

$ rhash -c sha3-256sums.txt

--( Verifying sha3-256sums.txt )------------------------------------------------
foo.txt                                             OK
--------------------------------------------------------------------------------
Everything OK

uutils coreutils

uutils coreutilshashsumコマンドはSHA-3をサポートしています。

Repology

Packaging status

SHA-3チェックサムを計算するには--sha3-{224,256,384,512}オプションを追加します。
環境によってはsha3-{224,256,384,512}sumのコマンド名で実行できるかもしれません。

$ echo "Hello, world!" > foo.txt
$ hashsum --sha3-256 foo.txt | tee sha3-256sums.txt
# または
$ sha3-256sum foo.txt | tee sha3-256sums.txt
ae6802d17c07cbe2b677c46decd5c2c28a4a585fedcb813ad8e7cb1469782773  foo.txt

検証するには-cオプションを追加します。

$ hashsum --sha3-256 -c sha3-256sums.txt
# または
$ sha3-256sum -c sha3-256sums.txt
foo.txt: OK

オプションはcoreutilsのcksumの共通オプションの多くが実装されているようです。

libkeccak/sha3sum

sha3sumはSHA-3チェックサムを計算するコマンドラインユーティリティで、libkeccakを使用しています。

Repology

Packaging status

出力長に合わせてsha3-{224,256,384,512}sumから目的のコマンドを選んで実行します。

$ echo "Hello, world!" > foo.txt
$ sha3-256sum foo.txt | tee sha3-256sums.txt
ae6802d17c07cbe2b677c46decd5c2c28a4a585fedcb813ad8e7cb1469782773  foo.txt

検証するには-cオプションを追加します。

$ sha3-256sum -c sha3-256sums.txt
foo.txt: OK

所感

計算だけの場合は多くの環境でデフォルトでインストールされる可能性が高いのでOpenSSLが一番簡単に利用できるように思います。
検証もする場合はインストールのしやすさの点ではRHashで、coreutilsとの互換性重視の場合はuutils coreutilsが良いように思います。

GitHubで編集を提案

Discussion