hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

sha256sumコマンドの使い方



1 はじめに

チェックサムを計算するコマンドの使い方について説明します。

2 検証環境

CentOS版数は次のとおりです。

[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

カーネル版数は次のとおりです。

[root@server ~]# uname -r
3.10.0-1160.el7.x86_64

3 コマンド一覧

チェックサムを求めるコマンドとして、下記6コマンドがインストールされていました。

4 コマンドのオプション一覧

どのコマンドのオプションも同じでした。ここでは、sha256sumのオプション一覧を示します。

[root@server ~]# sha256sum --help
使用法: sha256sum [OPTION]... [FILE]...
SHA256 (256-bit) チェックサムを表示または照合します。
FILE の指定が無いか、 - が指定された場合、標準入力から読み込みます。

  -b, --binary         バイナリモードで読み込む
  -c, --check          FILE から SHA256 チェックサムを読み込み、照合する
      --tag            create a BSD-style checksum
  -t, --text           テキストモードで読み込む (デフォルト)
  Note: There is no difference between binary and text mode option on GNU system.

The following four options are useful only when verifying checksums:
      --quiet          don't print OK for each successfully verified file
      --status         don't output anything, status code shows success
      --strict         exit non-zero for improperly formatted checksum lines
  -w, --warn           warn about improperly formatted checksum lines

      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

The sums are computed as described in FIPS-180-2.  When checking, the input
should be a former output of this program.  The default mode is to print
a line with checksum, a character indicating input mode ('*' for binary,
space for text), and name for each FILE.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
sha256sum の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。
完全な文書を参照する場合は info coreutils 'sha256sum invocation' を実行してください。

5 チェックサムを計算する方法

各コマンドを使って、チェックサムを計算してみます。

5.1 事前準備

テスト用のファイルを作成します。
なお、ファイルの作成方法は、ファイルの作り方 - hana_shinのLinux技術ブログを参照してください。

[root@server ~]# head -c 1m /dev/urandom > 1m.data
[root@server ~]# ls -l 1m.data
-rw-r--r--. 1 root root 1048576  1月  5 21:00 1m.data

5.2 md5sumコマンドによるチェックサムの計算

[root@server ~]# md5sum 1m.data
1dd822615ae0d42a29769e9eb2f98bbd  1m.data

5.3 sha1sumコマンドによるチェックサムの計算

[root@server ~]# sha1sum 1m.data
d4b7495965fdb7a45dc5012f6e8d7e58701221eb  1m.data

5.4 sha256sumコマンドによるチェックサムの計算

[root@server ~]# sha256sum 1m.data
93b48c575ff85a26db49b8f249135e9f894c8481a106435acda43767e735affd  1m.data

5.5 sha512sumコマンドによるチェックサムの計算

[root@server ~]# sha512sum 1m.data
e88e86635008260c7a4d5d6ab1630ef255345fbf7216c3befbe51a1151185d0af07ea832949325a3537a50003d746524d9f2c5b1299a71afd2ec5b70ea6f63b6  1m.data

6 ファイルが壊れていないかどうかの確認方法

6.1 事前準備

テスト用のファイルを作成します。

[root@server ~]# head -c 1m /dev/urandom > 1m.data
[root@server ~]# head -c 2m /dev/urandom > 2m.data
[root@server ~]# head -c 3m /dev/urandom > 3m.data

チェックサムを格納したファイル(sha256sum.txt)を作成します。
なお、findコマンドの使い方は、findコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。

[root@server ~]# find . -maxdepth 1 -type f -name "*.data" -exec sha256sum {} >> sha256sum.txt \;

作成したファイルの中身を確認します。

[root@server ~]# cat sha256sum.txt
3d4d3872471a4c2b48257a3ef6184d3c7fbe076f4675bb0b6466dee24249fb6d  ./1m.data
55abe3fd286f14c520ffe59c81ef7ecb499c0b3a5513de2b47627bd6036e8229  ./2m.data
fb9139b751d748aac424a269816209ba06c85baa83fd8b5c65ce85f548c8bdfe  ./3m.data

6.2 ファイルが壊れていないことの確認

ファイルが壊れていないことを確認します。
ファイル作成後、何も変更を加えていないので、チェックサムのチェックはいずれも「完了」となります。

[root@server ~]# sha256sum -c sha256sum.txt
./1m.data: 完了
./2m.data: 完了
./3m.data: 完了

次にファイルを意図的に壊してみます。

[root@server ~]# echo 1>> 3m.data

sha256sum.txtを使って、再度ファイルが壊れていないかどうか確認してみます。
変更を加えたファイルが「失敗」と表示されていることがわかります。

[root@server ~]# sha256sum -c sha256sum.txt
./1m.data: 完了
./2m.data: 完了
./3m.data: 失敗
sha256sum: 警告: 1 個の計算したチェックサムが一致しませんでした

7 ファイルが壊れていないかどうかの確認方法(実践編)

理研からダウンロードしたisoファイルが壊れていないかどうかを確認してみます。
http://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/
ISOファイルをダウンロードします。

[root@server ~]# wget http://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-NetInstall-2009.iso

ダウンロードしたISOファイルを確認します。

[root@server ~]# ls -l CentOS-7-x86_64-NetInstall-2009.iso
-rw-r--r--. 1 root root 602931200 10月 27  2020 CentOS-7-x86_64-NetInstall-2009.iso

次に、sha256sum.txtファイルをダウンロードします。

[root@server ~]# wget http://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/sha256sum.txt

sha256sum.txtファイルの中身を確認します。
4ファイルのsha256チェックサムが格納されていることがわかります。

[root@server ~]# cat sha256sum.txt
689531cce9cf484378481ae762fae362791a9be078fda10e4f6977bf8fa71350  CentOS-7-x86_64-Everything-2009.iso
b79079ad71cc3c5ceb3561fff348a1b67ee37f71f4cddfec09480d4589c191d6  CentOS-7-x86_64-NetInstall-2009.iso
07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a  CentOS-7-x86_64-Minimal-2009.iso
e33d7b1ea7a9e2f38c8f693215dd85254c3a4fe446f93f563279715b68d07987  CentOS-7-x86_64-DVD-2009.iso


CentOS-7-x86_64-NetInstall-2009.iso」が壊れていなかどうかを確認してみます。
「完了」(★印)と表示されているので、ファイルが壊れていないことがわかります。
CentOS-7-x86_64-NetInstall-2009.iso」以外のファイルはダウンロードしていないので、
「そのようなファイルやディレクトリはありません」と表示されています。

[root@server ~]# sha256sum -c sha256sum.txt
sha256sum: CentOS-7-x86_64-Everything-2009.iso: そのようなファイルやディレクトリはありません
CentOS-7-x86_64-Everything-2009.iso: オープンまたは読み込みに失敗しました
CentOS-7-x86_64-NetInstall-2009.iso: 完了 ★
sha256sum: CentOS-7-x86_64-Minimal-2009.iso: そのようなファイルやディレクトリはありません
CentOS-7-x86_64-Minimal-2009.iso: オープンまたは読み込みに失敗しました
sha256sum: CentOS-7-x86_64-DVD-2009.iso: そのようなファイルやディレクトリはありません
CentOS-7-x86_64-DVD-2009.iso: オープンまたは読み込みに失敗しました
sha256sum: 警告: 一覧にある 3 個のファイルが読み込めませんでした

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ