md5sumコマンドについて詳しくまとめました 【Linuxコマンド集】

md5sumコマンド
  • このエントリーをはてなブックマークに追加
  • Pocket

md5sumはファイルのMD5アルゴリズムでのハッシュ値を計算するコマンドだ。

MDハッシュ値とは

ハッシュとは、ファイルやデータを数学的に圧縮したもので、内容が同じであれば同じ値になる。

MD5アルゴリズムのハッシュ値は32個の16進数(128bit)で構成される文字列でほぼ無限の組み合わせと言える。

ファイルの偽造防止などに使われる。

ファイルやデータの中身が一つでも違うと全く違ったハッシュ値となる。

keyboardの文字のMD5のハッシュ値はeca354126da76dab6eccd97933151e78で、keyboard1の文字のハッシュ値は7fdddc904f6929a0663da554ac69e6d3だ。

ファイル名が違っても内容が同じであればハッシュ値は同じになる。

 

md5sumコマンド

例えば、一つのプログラムファイルをインターネットで公開したとしよう。

悪意を持った人間が、そのファイルにウィルスを仕掛けた場合、MD5ハッシュ値は本来のものと全く違うものとなる。

このことを応用して、ファイル公開時に別の方法でファイルを入手したユーザーにMD5ハッシュ値を知らせておけば、ユーザーがMD5ハッシュ値をチェックすれば入手経路のどこかで何らかの改変があっても気づくことができるのだ。

md5sumコマンドの基本

コマンドの基本動作

使い方は、次のとおりだ。

$ md5sum ファイル名

ファイルga.txtのMD5ハッシュ値を計算する場合は、次のコマンドだ。

$ md5sum ga.txt

md5sumコマンド

ファイルga.txtのMD5ハッシュ値が計算され、結果とファイル名が表示された。

複数のファイルを指定する場合は、空白で列挙することもできる。

ファイル名にワイルドカードを指定するもこともできる。

kなんとか.txtというファイル名すべてのMD5ハッシュ値を計算するコマンドは次の通りだ。

$ md5sum k*.txt

md5sumコマンド

kなんとか.txtというファイル名すべてのMD5ハッシュ値が計算された。

ファイルではなく、文字列データに関してもMD5ハッシュ値を計算できる。

その場合は、コマンドmd5sumのみ入力し、Enterキーを押す。

$ md5sum

md5sumコマンド

MD5ハッシュ値を知りたい文字列を入力する。

今回は、「Japan 改行 America 改行」と入力した。

md5sumコマンド

最後にCtrl+Dのキーを押すと、その文字列のMD5ハッシュ値が表示される。

md5sumコマンド

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

md5sumコマンド

ファイル/bin/lsのMD5ハッシュ値が計算された。

-bオプションを付与した場合はファイル名の前に*が表示される。

-tオプション(--textオプション):ファイルをテキストファイルとして扱う

ファイルをテキストファイルとして扱うオプションだ。

しかし、Linuxシステムおいてはテキストファイルとバイナリファイルの区別をしていないため、バイナリファイルに対し-tオプションを指定しても指定しない時の値と同じ値を出力する。

バイナリファイルとテキストファイルに区別のあるOSにおいては、別のハッシュ値を出力する。

Linuxシステムにおいては、明示的にテキストファイルと指定する場合に利用するといいだろう。

ハッシュ値を明示的にテキストで計算する書式は次のとおりだ。

$ md5sum -t ファイル名

ファイルga.txtのMD5ハッシュ値をテキストとして計算する場合は、次のコマンドだ。

$ md5sum -t ga.txt

md5sumコマンド

ファイルga.txtのMD5ハッシュ値が計算された。

-cオプション(--checkオプション):MD5ハッシュ値とファイルが一致しているかチェックする

md5sumは、あらかじめ用意されたMD5ハッシュ値が対応するファイルと一致しているかチェックすることができる。

-cオプションはチェックするオプションだ。

チェックするには、MD5ハッシュ値とファイル名の対応の一覧表を作成しておく必要がある。

一覧表は、MD5ハッシュ値とファイル名が空白を空けて記録されていればよい。

簡単に一覧表を作成するには、md5sumコマンドで作成した内容をファイルにリダイレクトした内容でよい。

チェックする場合は次の書式だ。

$ md5sum -c 一覧表ファイル名

一覧表checkに記載されているファイルとmd5ハッシュの組み合わせをチェックするには、次のコマンドだ。

$ md5sum -c check

md5sumコマンド

はじめにtなんとか.txtファイルすべてのMD5ハッシュ値を取得し、内容をファイルcheckに書き出す。

そのファイルcheckの内容をチェックし、すべてのファイルのMD5ハッシュ値とファイルの組み合わせが合っていることがわかった。

ファイルcheck内のファイルt4.txtのハッシュ値の一部を書き換え、同様にMD5ハッシュ値をチェックした。

md5sumコマンド

ファイルt4.txtのハッシュ値が一致しないので、FAILEDとなった。

--quietオプション:一致しない場合のみ表示する

チェック時に一致しない場合のみ表示するオプションで-cオプションと同時に使用する。

書式は次の通りだ。

$ md5sum --quiet -c ファイル名

一覧表ファイルcheckに記載されているファイルとmd5ハッシュの組み合わせをチェックし、一致しないもののみ表示するには、次のコマンドだ。

$ md5sum --quiet -c check

md5sumコマンド

一覧表checkに記載されているファイルとmd5ハッシュの組み合わせをチェックし、一致しなかったファイルt4.txtがFAILEDで表示された。

--statusオプション:結果を表示しない

チェック時に結果を表示しないオプションで-cオプションと同時に使用する。

書式は次の通りだ。

$ md5sum -- status -c ファイル名

一覧表ファイルcheckに記載されているファイルとmd5ハッシュの組み合わせをチェックするが結果を表示しない場合には、次のコマンドだ。

$ md5sum -- status -c check

md5sumコマンド

一覧表ファイルcheckに記載されているファイルとmd5ハッシュの組み合わせをチェックするが結果は表示しない。

意味がない動作のように思われるが、md5sumの結果としての戻り値には値は戻ってきている。

echoコマンドと組み合わせればその内容を確認できる。

一覧表ファイルcに記載されているファイルとmd5ハッシュの組み合わせをチェックしその戻り値を確認するには次のコマンドだ。

$ md5sum -- status -c check ; echo $?

md5sumコマンド

一覧表ファイルcに記録されているファイルとハッシュ値は一致している。

戻り値は0であった。

一覧表ファイルcのハッシュ値を一部変更し、再度戻り値を確認してみる。

md5sumコマンド

戻り値は1であった。

md5sumコマンドの戻り値はチェックの結果、一致していれば0、一致していなければ0以外のエラーコードを出力する。

このように—statusコマンドは、戻り値を参照し他の目的で活用する場合に利用する。

-wオプション(—warnオプション):結果を表示する

-cオプションだけを指定した時と同じく、すべての結果を表示する。

明示的に結果をすべて表示し、チェックする場合は次の書式だ。

$ md5sum -w -c 一覧表ファイル名

明示的に結果をすべて表示し、一覧表checkに記載されているファイルとmd5ハッシュの組み合わせをチェックするには、次のコマンドだ。

$ md5sum -w -c check

md5sumコマンド

ファイルt4.txtのハッシュ値が一致しないので、FAILEDとなった。

md5sum関連コマンド

最後にmd5sumコマンドに関連して、基本的なハッシュ値計算のコマンドも紹介しておく

sha1sumコマンド

sha1アルゴリズムでハッシュ値を計算する。

まとめ

このページでは、md5sumコマンドを使ったハッシュ値の計算の方法を解説した。

ハッシュ値は、同じ内容で同じアルゴリズムであればどのコンピュータを使っても同じものが計算される。

メールやWebを介してやり取りされたファイルの送信元でファイルのハッシュ値を計算し、別ルートで受信者にハッシュ値を教えておけば、正しくファイルが送られたかもチェックできる。

また、圧縮ファイルに対してハッシュ値を計算して比較すれば、圧縮ファイル全体に変更がされているものか、同一のものかどうかのチェックができる。

ぜひ活用しよう。

 

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する