ファイルの sha256sum を取得して比較し、1 行でチェックするにはどうすればよいですか?

ファイルの sha256sum を取得して比較し、1 行でチェックするにはどうすればよいですか?

スクリプトでダウンロードしてすぐにその整合性をチェックしたいという欲求が常にあるのですが、 の正しい呪文を見つけることができませんsha256sum

MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}

sha256sum新しいファイルの を取得し、それを既知のハッシュとすぐに比較するにはどうすればよいでしょうか?

答え1

アーカイブ ファイルとそれに付随するチェックサム ファイルをダウンロードしました。ダウンロードしたアーカイブのハッシュがダウンロードしたチェックサム ファイルのハッシュと一致することを確認する方法は次のとおりです。

echo "$(cat archive.tar.gz.sha256) archive.tar.gz" | sha256sum --check --status

フラグ--statusはすべての stdout 出力を防止します ( よりも効果的です--quiet)。次に、戻りコードを使用して一致したかどうかを判断する必要がありますが、スクリプトでこれを使用するので、いずれにしてもこれが必要なことです。

答え2

例:

 echo "67574ee0039eaf4043a237e7c4b0eb432ca07ebf9c7b2dd0667e83bc3900b2cf kali-linux-2019.2-amd64.iso" | sha256sum -c

ファイルがある場合はsha256sum、それを直接使用できます。

sha256sum -c "kali-linux-2019.2-amd64.iso.txt.sha256sum"

説明:

上記の例では、

echo "<known SHA 256 sum of the file> <name of the file>" | sha256sum -c

sha256sum -csha256sumオプションは、ファイルまたはからSHA256 サムを読み取ることができますSTDIN。ファイルがない場合はsha256sumechoコマンドを使用して、ファイルに含まれる同じ詳細を提供できますsha256sum

ファイルがある場合はsha256sum、それを直接使用できます。

sha256sum -c "<sha256sum file name>"

注記:

あるいは、のshasum -a 256代わりにを使用することもできます。sha256sumここで、 は-a使用するアルゴリズムを指定します。

答え3

前回の (通常の) sha256sum 実行の出力を取得していることがわかりますsha256sum --check。stdin 経由でハッシュとファイル名を取得し、実際のファイルと比較します。

したがって、当然のことですが、必要な形式で出力を手動で与えることが考えられます。

$ echo "da39a3ee5e6b4b0d3255bfef95601890afd80709  motd" | sha1sum --check
motd: OK

答え4

チェックサム ファイルがある場合は、 を実行するだけですsha256sum --check。例:

% ls
elasticsearch-7.9.3-darwin-x86_64.tar.gz           # File to check
elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512    # Checksum file


% sha512sum --check elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512
elasticsearch-7.9.3-darwin-x86_64.tar.gz: OK

関連情報