GoでBLAKE3のmd5sumみたいなものを作った
GoでBLAKE3向けのMD5のmd5sum
やSHA-256のsha256sum
に相当するコマンドのgb3sum
を作りました。
この記事ではgb3sum
のインストールや使い方、同じような目的のコマンドとの違いについて紹介します。
インストール
Homebrewを使っている場合はbrew install
でインストールできます。
brew install sorairolake/tap/gb3sum
また、gb3sum
はGoで書かれているのでgo install
でインストールすることもできます。
go install github.com/sorairolake/gb3sum@latest
使い方
基本的な使い方
coreutilsのcksumの共通オプションとなるべく互換性があるようにしているので、基本的にはLinuxやFreeBSDのmd5sum
やsha256sum
などの代替品として利用できます。
チェックサムを計算するときはファイル名を指定して実行するだけです。
echo "Hello, world!" > foo.txt
gb3sum foo.txt | tee b3sums.txt
出力:
94f1675bac4f8bc3c593c63dbf5fe78a0bfda01082af85d5b41a65096db56bff foo.txt
チェックサムの検証は-c
オプションと所定の形式のチェックサムが書かれたファイルを指定します。
gb3sum -c b3sums.txt
出力:
foo.txt: OK
比較
coreutils
gb3sum
はcoreutilsのcksumの共通オプションとなるべく互換性があるようにはしていますが、いくつか欠けているオプションや独自のオプションがあります。
- ファイルをバイナリモードで読み込むオプション(
-b
)とテキストモードで読み込むオプション(-t
)はありません。gb3sum
は常にファイルをバイナリファイルとして扱います。 - 出力行の区切りとしてNULを使用するオプション(
-z
)はありません。gb3sum
では区切りには常に改行文字を使います。 - BLAKE3は任意の長さのハッシュ値を出力できるのでバイト単位でそれを指定するオプション(
-l
)があります。デフォルトでは32バイト(256ビット)のハッシュ値を出力します。
b3sum
BLAKE3のリファレンス実装はb3sum
というコマンドを提供しています。
BLAKE3は通常のハッシュ以外にもメッセージ認証符号(MAC)や鍵導出関数(KDF)としても使えるので、b3sum
は通常のハッシュに加えてそれらも計算できますが、gb3sum
は通常のハッシュだけに対応しています。
現時点でgb3sum
だけが対応している機能としては、BSD形式のチェックサムの出力(--tag
)や、--ignore-missing
や--status
などのオプションが実装済みであることがあります。
目的が同様なオプションは同じ名前になっているので、単純にチェックサムの計算と検証をするだけなら互換品として利用できると思います。
終わりに
gb3sum
を紹介しました。
機能的にはb3sum
のGo実装というよりはcoreutilsのb2sum
に近いものになっていると思います。
BSD形式のチェックサムを出力したい場合やチェックサムを検証するときに--ignore-missing
などのオプションを使いたい場合にgb3sum
を使っていただけると幸いです。
Discussion