md5sumはファイルのMD5アルゴリズムでのハッシュ値を計算するコマンドだ。
MDハッシュ値とは
ハッシュとは、ファイルやデータを数学的に圧縮したもので、内容が同じであれば同じ値になる。
MD5アルゴリズムのハッシュ値は32個の16進数(128bit)で構成される文字列でほぼ無限の組み合わせと言える。
ファイルの偽造防止などに使われる。
ファイルやデータの中身が一つでも違うと全く違ったハッシュ値となる。
keyboardの文字のMD5のハッシュ値はeca354126da76dab6eccd97933151e78で、keyboard1の文字のハッシュ値は7fdddc904f6929a0663da554ac69e6d3だ。
ファイル名が違っても内容が同じであればハッシュ値は同じになる。
例えば、一つのプログラムファイルをインターネットで公開したとしよう。
悪意を持った人間が、そのファイルにウィルスを仕掛けた場合、MD5ハッシュ値は本来のものと全く違うものとなる。
このことを応用して、ファイル公開時に別の方法でファイルを入手したユーザーにMD5ハッシュ値を知らせておけば、ユーザーがMD5ハッシュ値をチェックすれば入手経路のどこかで何らかの改変があっても気づくことができるのだ。
md5sumコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ md5sum ファイル名
ファイルga.txtのMD5ハッシュ値を計算する場合は、次のコマンドだ。
$ md5sum ga.txt
ファイルga.txtのMD5ハッシュ値が計算され、結果とファイル名が表示された。
複数のファイルを指定する場合は、空白で列挙することもできる。
ファイル名にワイルドカードを指定するもこともできる。
kなんとか.txtというファイル名すべてのMD5ハッシュ値を計算するコマンドは次の通りだ。
$ md5sum k*.txt
kなんとか.txtというファイル名すべてのMD5ハッシュ値が計算された。
ファイルではなく、文字列データに関してもMD5ハッシュ値を計算できる。
その場合は、コマンドmd5sumのみ入力し、Enterキーを押す。
$ md5sum
MD5ハッシュ値を知りたい文字列を入力する。
今回は、「Japan 改行 America 改行」と入力した。
最後にCtrl+Dのキーを押すと、その文字列のMD5ハッシュ値が表示される。
md5sumコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション -b(オプション--binary)
ファイルをバイナリファイルとして扱う。
オプション -t(オプション--text)
ファイルをテキストファイルとして扱う。
オプション -c(オプション--check)
MD5ハッシュ値とファイルが一致しているかチェックする。
オプション --quiet
一致しない場合のみ表示する。
オプション –status
結果を表示しない。
オプション-w(オプション—warn)
結果を表示する。
-bオプション(--binaryオプション):ファイルをバイナリファイルとして扱う
ファイルをバイナリファイルとして扱うオプションだ。
しかし、Linuxシステムおいてはバイナリファイルとテキストファイルの区別をしていないため、テキストファイルに対し-bオプションを指定しても指定しない時の値と同じ値を出力する。
バイナリファイルとテキストファイルに区別のあるOSにおいては、別のハッシュ値を出力する。
Linuxシステムにおいては、明示的にバイナリファイルと指定する場合に利用するといいだろう。
ハッシュ値を明示的にバイナリで計算する書式は次のとおりだ。
$ md5sum -b ファイル名
ファイル/bin/lsのMD5ハッシュ値をバイナリとして計算する場合は、次のコマンドだ。
$ md5sum -b /bin/ls
ファイル/bin/lsのMD5ハッシュ値が計算された。
-bオプションを付与した場合はファイル名の前に*が表示される。
-tオプション(--textオプション):ファイルをテキストファイルとして扱う
ファイルをテキストファイルとして扱うオプションだ。
しかし、Linuxシステムおいてはテキストファイルとバイナリファイルの区別をしていないため、バイナリファイルに対し-tオプションを指定しても指定しない時の値と同じ値を出力する。
バイナリファイルとテキストファイルに区別のあるOSにおいては、別のハッシュ値を出力する。
Linuxシステムにおいては、明示的にテキストファイルと指定する場合に利用するといいだろう。
ハッシュ値を明示的にテキストで計算する書式は次のとおりだ。
$ md5sum -t ファイル名
ファイルga.txtのMD5ハッシュ値をテキストとして計算する場合は、次のコマンドだ。
$ md5sum -t ga.txt
ファイルga.txtのMD5ハッシュ値が計算された。
-cオプション(--checkオプション):MD5ハッシュ値とファイルが一致しているかチェックする
md5sumは、あらかじめ用意されたMD5ハッシュ値が対応するファイルと一致しているかチェックすることができる。
-cオプションはチェックするオプションだ。
チェックするには、MD5ハッシュ値とファイル名の対応の一覧表を作成しておく必要がある。
一覧表は、MD5ハッシュ値とファイル名が空白を空けて記録されていればよい。
簡単に一覧表を作成するには、md5sumコマンドで作成した内容をファイルにリダイレクトした内容でよい。
チェックする場合は次の書式だ。
$ md5sum -c 一覧表ファイル名
一覧表checkに記載されているファイルとmd5ハッシュの組み合わせをチェックするには、次のコマンドだ。
$ md5sum -c check
はじめにtなんとか.txtファイルすべてのMD5ハッシュ値を取得し、内容をファイルcheckに書き出す。
そのファイルcheckの内容をチェックし、すべてのファイルのMD5ハッシュ値とファイルの組み合わせが合っていることがわかった。
ファイルcheck内のファイルt4.txtのハッシュ値の一部を書き換え、同様にMD5ハッシュ値をチェックした。
ファイルt4.txtのハッシュ値が一致しないので、FAILEDとなった。
--quietオプション:一致しない場合のみ表示する
チェック時に一致しない場合のみ表示するオプションで-cオプションと同時に使用する。
書式は次の通りだ。
$ md5sum --quiet -c ファイル名
一覧表ファイルcheckに記載されているファイルとmd5ハッシュの組み合わせをチェックし、一致しないもののみ表示するには、次のコマンドだ。
$ md5sum --quiet -c check
一覧表checkに記載されているファイルとmd5ハッシュの組み合わせをチェックし、一致しなかったファイルt4.txtがFAILEDで表示された。
--statusオプション:結果を表示しない
チェック時に結果を表示しないオプションで-cオプションと同時に使用する。
書式は次の通りだ。
$ md5sum -- status -c ファイル名
一覧表ファイルcheckに記載されているファイルとmd5ハッシュの組み合わせをチェックするが結果を表示しない場合には、次のコマンドだ。
$ md5sum -- status -c check
一覧表ファイルcheckに記載されているファイルとmd5ハッシュの組み合わせをチェックするが結果は表示しない。
意味がない動作のように思われるが、md5sumの結果としての戻り値には値は戻ってきている。
echoコマンドと組み合わせればその内容を確認できる。
一覧表ファイルcに記載されているファイルとmd5ハッシュの組み合わせをチェックしその戻り値を確認するには次のコマンドだ。
$ md5sum -- status -c check ; echo $?
一覧表ファイルcに記録されているファイルとハッシュ値は一致している。
戻り値は0であった。
一覧表ファイルcのハッシュ値を一部変更し、再度戻り値を確認してみる。
戻り値は1であった。
md5sumコマンドの戻り値はチェックの結果、一致していれば0、一致していなければ0以外のエラーコードを出力する。
このように—statusコマンドは、戻り値を参照し他の目的で活用する場合に利用する。
-wオプション(—warnオプション):結果を表示する
-cオプションだけを指定した時と同じく、すべての結果を表示する。
明示的に結果をすべて表示し、チェックする場合は次の書式だ。
$ md5sum -w -c 一覧表ファイル名
明示的に結果をすべて表示し、一覧表checkに記載されているファイルとmd5ハッシュの組み合わせをチェックするには、次のコマンドだ。
$ md5sum -w -c check
ファイルt4.txtのハッシュ値が一致しないので、FAILEDとなった。
md5sum関連コマンド
最後にmd5sumコマンドに関連して、基本的なハッシュ値計算のコマンドも紹介しておく
sha1sumコマンド
sha1アルゴリズムでハッシュ値を計算する。
まとめ
このページでは、md5sumコマンドを使ったハッシュ値の計算の方法を解説した。
ハッシュ値は、同じ内容で同じアルゴリズムであればどのコンピュータを使っても同じものが計算される。
メールやWebを介してやり取りされたファイルの送信元でファイルのハッシュ値を計算し、別ルートで受信者にハッシュ値を教えておけば、正しくファイルが送られたかもチェックできる。
また、圧縮ファイルに対してハッシュ値を計算して比較すれば、圧縮ファイル全体に変更がされているものか、同一のものかどうかのチェックができる。
ぜひ活用しよう。
コメント