Linuxコマンド md5sum/sha1sum(MD5/SHA1・SHA2メッセージダイジェストを出力する)

md5sumはMD5チェックサム、sha1sumはSHA1チェックサムを出力/検証するコマンド解説

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:md5sum,sha1sum,sha224sum,sha256sum,sha384sum,sha512sum

概要・使用方法

オープンソースソフトウェアのダウンロードページには、ダウンロードしたファイルが破損していないか、改竄されていないチェックするためのチェックサム値やチェックサムファイル(ハッシュファイル)が配置されています。チェックサム値は、ファイルの一定の長さに要約した値(ハッシュ値)が使用されます。これをメッセージダイジェストと呼びます。

ハッシュ値を計算するアルゴリズムには、MD5やSHA-1、SHA-2などがあります。

MD5とSHA1は、入力に対してハッシュ値を出力するハッシュ関数です。ファイルに「-」が指定された場合は標準入力を読み込んで計算/出力します。

書式

$ md5sum [オプション] [ファイル名・・・]
$ sha1sum [オプション] [ファイル名・・・]

オプション

–c,
–no-create
ファイルを作成しない
-r ファイル名,
–reference=ファイル名
指定したファイルのサイズを参照する
-s サイズ,
–size=サイズ
ファイルサイズを指定する
オプション一覧表

照合時のみのオプション

–ignore-missingファイルが存在しない場合、失敗もせずステータスも表示しない
–quietファイルのチェックサムの照合が成功したとき、OKを表示しない
–status何も出力しない。終了コードで結果を判別する
–strict不正な形式のチェックサム行の場合に 0 以外のコードで終了する
-w,
–warn
チェックサム行の書式が不正な場合に警告を行う

長いハッシュ

これとは別に長いハッシュ出力用コマンドが存在します。sha224sum/sha256sum/sha384sum/sha512sumなどがあります。オプションも同様です。

サンプル

$ sha1sum sample.txt > sha1sum.txt

実行結果

[centos@xxx work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 13 May  2 08:56 sample.txt
[centos@xxx work]$ sha1sum sample.txt > sha1sum.txt #ハッシュ値の出力
[centos@xxx work]$ sha1sum -c sha1sum.txt #出力したハッシュ値を検証
sample.txt: OK #検証成功

[centos@xxx work]$ echo "test" >sample.txt #元のテキストファイルを改竄
[centos@xxx work]$ sha1sum -c sha1sum.txt #検証
sample.txt: FAILED #検証NGになる。
sha1sum: WARNING: 1 computed checksum did NOT match
[centos@xxx work]$

終了コードで検証結果を表示する

終了コードで検証結果を判定ができる。シェルスクリプト内で使用するときに役にたつ。

サンプル

$ md5sum --status -c 

実行結果

[centos@xxx work]$ md5sum sample.txt > md5sum.txt
[centos@xxx work]$ md5sum --status -c md5sum.txt ; echo $? #検証が成功した場合は、0を出力
0
[centos@xxx work]$ echo "abc" >> sample.txt
[centos@xxx work]$ md5sum --status -c md5sum.txt ; echo $? #検証がNGの場合は、1を出力
1
[centos@xxx work]$