md5sum
何するコマンド?
MD5チェックサム(ハッシュ関数のMD5から返ってくる値)を計算するときに使うコマンド
書き方
md5sum [オプション] [対象のファイル]
オプション
| オプション | 説明 |
|---|---|
| -b | バイナリデータとして読み込むよ read in binary mode |
| --binary | バイナリデータとして読み込むよ read in binary mode |
| -c | ファイルとMD5チェックサムの一覧を読み込んで、それぞれの対応が正しいか検証するよ read MD5 sums from the FILEs and check them |
| --check | ファイルとMD5チェックサムの一覧を読み込んで、それぞれの対応が正しいか検証するよ read MD5 sums from the FILEs and check them |
| --tag | BSD-styleとやらのMD5チェックサムにするぞ~ create a BSD-style checksum |
| -t | テキストデータとして読み込むよ read in text mode (default) |
| --text | テキストデータとして読み込むよ read in text mode (default) |
補足事項
順番に見ていきましょう。
まずは予備知識として
・ハッシュ関数
・MD5
・MD5チェックサム
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ハッシュ関数は「入力に対応する適当な値(適当に見える値)を返してくれる関数」です。
例えば、ハッシュ関数に「愛媛みかん」を入れると「3」が返ってくるとしましょう。
同じように「青森りんご」を入れると「4」が返ってきます。
「栃木苺」を入れた場合は「5」が返ってきます。
ハッシュ関数は同じ物を入れれば必ず同じ値が返ってきます。
「愛媛みかん」を入れた場合に返ってくるのは、必ず「3」です。
何回入れても「3」が返ってきます。
「4」が返ってくることは ありません。
このような関数がハッシュ関数です。
ハッシュ関数には
1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる
という特徴があります。
※話を単純化するために「適当な値」という表現を使っていますが、実際には適当では ありません。入力されたデータを「特定のルールに沿って」ぐちゃぐちゃにした値が返ってきます。
さて、そんなハッシュ関数ですが、世の中に1つしかないわけでは ありません。
いろいろ あります。
そんないろいろあるハッシュ関数のひとつが「MD5」です。
MD5に対して何かを渡すと、適当な値が返ってきます。
このMD5から返ってくる適当な値を「MD5チェックサム」と言います。
以上を踏まえて
対象データのMD5チェックサム(対象データをMD5に渡したときに戻ってくる値)を確認するときに使うコマンド
が「md5sum」コマンドです。
次に「md5sum」コマンドの使い方を見ていきましょう。
例えば中身が
abc(改行)
なファイル「hoge.txt」があったとします。
この状態で
md5sum hoge.txt
のように指定すると「hoge.txt」の中身がMD5に渡され、戻ってきた値が画面に表示されます。
私の環境では、以下の値が表示されました。
0bee89b07a248e27c83fc3d5951213c1
ファイルを指定しないで単に
md5sum
を実行すると、入力待ちの状態になります。
この状態で、例えば
abc(改行)
と入力し
Ctrlキーを押しながら「d」のキーを押す
と画面上から入力した内容を元にMD5チェックサムが計算されます。
私の環境では、以下の値が表示されました。
0bee89b07a248e27c83fc3d5951213c1
先ほど「hoge.txt」を渡したときと同じ結果です。
ファイルの中身か手入力かの違いはあれど、渡したデータ自体は同じですからね。
戻ってくる値も同じなのです。
あとは「-c」オプションの使い方も説明しておきましょう。
前準備として、中身が
0bee89b07a248e27c83fc3d5951213c1 hoge.txt(改行)
なファイル「check.txt」を用意しています。
この状態で「-c」オプションを付けて
md5sum -c check.txt
を実行すると「hoge.txt」をMD5に渡した戻りが「0bee89b07a248e27c83fc3d5951213c1」になるかを確認してくれます。
チェック結果が正しい場合、私の環境では以下のように表示されました。
hoge.txt: 完了
チェック結果がおかしい場合は以下のような表示です。
md5sum: 警告: 1 個の計算したチェックサムが一致しませんでした
「チェックしたいのは1つだけなのに、わざわざチェック用のファイルを作るのは面倒くさいよ~」という場合は
echo "0bee89b07a248e27c83fc3d5951213c1 hoge.txt" |md5sum -c
のようにしてください。
「echo」コマンドで画面に出力して「|(パイプ)」で「md5sum -c」に突っ込んでいます。
