HOME


MD5チェックサムの計算ツール

2003/6/13
2003/10/23  HashCheckerを追加
2004/3/18  md5makeを追加
2004/5/18  ElleFileInfoを追加
2004/8/11  md5sumを追加
2004/9/3   最近発表されたMD5の欠陥(ハッシュ衝突)について追加

MD5チェックサムは、ファイルやテキストから計算される128ビットの値で、もとのファイルやテキストが1ビットでも異なると値が変化する。そのためファイルやテキストが改ざんされていないかを確認するために使うことができる。

しかし2004年8月、異なる値から同一のMD5値を得るための新しい手法(*)が発表された(詳しくはここを参照)。そのため「もとのファイルやテキストが1ビットでも異なると値が「絶対に」変化する」とはいえなくなった。ソフトウェアの配布パッケージが真正のものであるという証明には、MD5は使われなくなっていくだろう。MD5以外の信頼性の高いハッシュアルゴリズムとしては、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512などがある。ただし暗号理論の権威ブルース・シュナイアー氏によれば「私たち皆がSHA-1から移行する時が来た」ということで、SHA-1は外すべきなのかもしれない。


*) 以前から、異なる値から同一のMD5値を得ることができるケースは存在したが、まれなケースであったため、大きな問題にはなっていなかった。

用語について:「MD5ハッシュ」や「MD5ハッシュ値」、「MD5ダイジェスト」と記述されている場合もあるが、どれも同じものを指している。ここでは多く使われている「MD5チェックサム」を用いる。
フォーマルな名称は「MD5メッセージダイジェスト」だろう。MD5はRFC1321として標準化されているが、そのタイトルは"The MD5 Message-Digest Algorithm"だ。

たとえば、



MD5チェックサム用ユーティリティ

wMD5sum (フリーウェア) Windows
作者:KK.Kon氏
ダウンロード先:http://kkkon.hp.infoseek.co.jp/index.shtml
wMD5sumは、MD5の計算・検証ができる。グラフィックインターフェイスなので使いやすい。

md5コマンド (フリーウェア) Windows
作者:ずるぼん氏
ダウンロード先:http://www.vector.co.jp/soft/win95/util/se224884.html
md5コマンドは、MD5の計算ができ、検証の機能はない。しかし、文字列を入力し、そのMD5を計算できる点がwMD5sumにない機能だ。

HashChecker (フリーウェア) Windows
作者:かみさか氏
ダウンロード先:http://www.vector.co.jp/soft/win95/util/se283188.html
HashCheckerは、MD5の計算・検証ができる。インターフェイスは洗練され、たいへん使いやすい。"CRC"という種類のチェックサムの計算・検証も同時にできる。

md5make (フリーウェア) Windows
作者:Shodoya氏
ダウンロード先:http://www.vector.co.jp/soft/win95/util/se136327.html
md5makeは、MD5の計算・検証ができる。インターフェイスは極めてシンプルで使いやすい。

ElleFileInfo (フリーウェア) Windows
作者:ElleTimeProject氏
ダウンロード先:http://www.vector.co.jp/soft/win95/util/se297267.html
ElleFileInfoは、ファイルの右クリックメニューからMD5値を計算・検証できる。

md5sum (フリーウェア) WindowsLinux
作者:Free Software Foundation
ダウンロード先:http://unxutils.sourceforge.net/
UNIX用(GNU)md5sumコマンドのWindows移植版。MD5ツールの元祖といっても過言ではない(と思う)。


wMD5sumの使い方

インストールと起動
インストールは、ダウンロードしたアーカイブを、適当なフォルダに展開するだけでよい。

起動するには、wMD5sum.exeをダブルクリックする。
下図のウィンドウが表示される。

ダウンロードするファイルを検証するには
ファイルのMD5チェックサムを入力したファイルがあれば、それも一緒にダウンロードして、同じフォルダに保存する。MD5チェックサムが入力されたファイルは、以下のどれかの名前でなければならない。

*の部分には拡張子があってもよい(例:hoge.zip.md5)。 この場合にMD5チェックサムを検証するには、次のようにする。
  1. 検証するファイルとMD5チェックサムのファイルを、同じフォルダに置く。

  2. wMD5sumを起動する。

  3. 検証するファイルを、wMD5sumのウィンドウにドラッグアンドドロップする。

  4. [開始]をクリックする。一致すれば[MD5状態]に[OK]と表示され、一致しなければ[NG]と表示される。

ファイルのMD5チェックサムが、Webページ上のテキストとして表示されている場合もある。

hoge-1.0.2-zip MD5チェックサム:7c080a1586d1ef8088a38465ebcaba8a
この場合は、以下のようにする。
  1. テキストファイルを新規に作成し、開く。

  2. WebページのMD5チェックサムをコピーし、テキストファイルにペーストする。

  3. ペーストしたMD5チェックサムの前に、以下の文字列を入力する。
    MD5 (検証する対象のファイル名) =

  4. テキストファイルを、次のどれかの名前で保存する。

  5. ダウンロードしたファイルとMD5チェックサムのファイルを、同じフォルダに置く。

  6. wMD5sumを起動する。

  7. 検証するファイルを、wMD5sumのウィンドウにドラッグアンドドロップする。

  8. [開始]をクリックする。一致すれば[MD5状態]に[OK]と表示され、一致しなければ[NG]と表示される。

メールの場合
メール本文に公開鍵が記載されていた場合、または公開鍵がファイルとして添付されていた場合、wMD5sumを使って検証するには、以下のようにする。

  1. 公開鍵をファイルとして保存する。

    メール本文に公開鍵が記載されていた場合

    1. テキストファイルを新規に作成し、開く。
    2. ---BIGIN...
      から
      ---END...
      までを選択してコピーし、テキストファイルにペーストする。このテキストファイルを、適当な名前で保存する。ここでは「A-san.pub」とする。

    公開鍵がファイルとして添付されていた場合
    普通の添付ファイルと同様にして保存する。ここではファイル名を「A-san.pub」とする。

  2. 別のテキストファイルを新規に作成し、次のように入力する。
    MD5 (A-san.pub) = 名刺などに記載されていた、Aさんの公開鍵のMD5チェックサム

  3. テキストファイルを「CHECKSUM.md5」という名前で、A-san.pubと同じフォルダに保存する。

  4. wMD5sumを起動する。

  5. A-san.pubをwMD5sumのウィンドウにドラッグアンドドロップする。

  6. [開始]をクリックする。
    一致すれば[MD5状態]に[OK]と表示され、一致しなければ[NG]と表示される。

自分のファイルのMD5チェックサムを計算するには

  1. wMD5sumを起動する。

  2. [削除]ボタンでリストを空にする

  3. MD5チェックサムを計算したいファイルを、リストにドラッグアンドドロップする。
    リストにMD5チェックサムが表示される。

  4. [保存]ボタンをクリックする。
    計算対象のファイルと同じ場所に、CHECKSUM.md5という名前のファイルが作られる。このファイルに、計算されたMD5チェックサムが入力されている。CHECKSUM.md5ファイルを開くと、
    MD5 (計算対象のファイル名) = 7c080a1586d1ef8088a38465ebcaba8a
    のようになっている。


md5コマンドの使い方

ダウンロードとインストール

アーカイブ(md5command100.zip)をダウンロードし、適当なフォルダに展開する。md5.exeがmd5コマンドの本体である。


md5.exeがあるフォルダとチェックサムを計算するファイルがあるフォルダの「パスを通す」か、または、md5コマンドを使うときに、md5.exeのパスと計算対象のファイルのパスを指定する。「パス」の概念を知らない人には、wMD5sumの方を使うことを勧める。

特定ファイルのMD5チェックサムを作成したい場合

コマンドプロンプトに、以下のように入力する。

>md5 ファイル名

複数のファイル名も指定できる。例えば:

>md5 file1 file2 file3 ...


文字列のMD5チェックサムを作成したい場合

コマンドプロンプトに、以下のように入力する。

>md5 -s 文字列


標準入力からの入力

コマンドプロンプトに、以下のように入力する。

>md5 < 標準出力に出力されるコマンドライン("dir"など)


画面表示例

C:\>md5 md5.exe
MD5 (md5.exe) = 364fe1c09da67d6c5c1df0a5680add4e

-qオプションを使用すると、MD5チェックサムだけが出力される。

C:\>md5 -q md5.exe 364fe1c09da67d6c5c1df0a5680add4e



HashCheckerの使い方

インストールと起動
インストールは、ダウンロードしたアーカイブを、適当なフォルダに展開するだけでよい。

起動するには、HashChecker.exeをダブルクリックする。
下図のウィンドウが表示される。

MD5値の計算
ウィンドウに「ファイルをドロップしてください」と表示されているので、そのとおりにすると、CRC値とMD5値が表示される。

MD5値の検証
HashCheckerにはたいへん親切に書かれたヘルプが付属しているので、これ以上の説明は必要ないのだが、一応書いておく。


md5makeの使い方

インストールと起動
インストールは、ダウンロードしたアーカイブを、適当なフォルダに展開するだけでよい。

起動するには、md5make.exeをダブルクリックする。
下図のウィンドウが表示される。

MD5値の計算
MD5値を計算するファイルを、上図のウィンドウにドラッグアンドドロップする。
下図のウィンドウが表示される。

ドロップしたファイルと同じフォルダ内に、「ファイル名.md5」という名前のファイルがなければ、「ファイル名.md5」が作成される(例:readme.txt.md5)。このファイルに、ドロップしたファイルのMD5値が入力されている。

MD5値の検証

  1. 検証するファイルのMD5値を入力したファイルがあれば、そのファイルを、同じフォルダに保存する。
    MD5値がWebページやメールに記載されている場合は、それをテキストファイルにペーストする。そして、検証するファイルと同じフォルダに保存する。
    どちらの場合でも、MD5値が入力されたファイルは、以下の条件に合わせる必要がある。

  2. 検証するファイルを、md5makeのウィンドウにドラッグアンドドロップする。

  3. 下図のダイアログで、[MD5確認]をクリックする。

    一致すれば「○ 一致」と表示される。

    一致しなければ[× 不一致]と表示される。



ElleFileInfoの使い方

「窓の杜」の「ファイル上の右クリックメニューから“CRC32”“MD5”を確認「ElleFileInfo」」(http://www.forest.impress.co.jp/article/2004/05/14/ellefileinfo.html)で解説されている。

ただし同記事に「CRC32のハッシュ値は8文字の、MD5のハッシュ値は32文字の英数字で表記できる。」とあるが、これは「CRC32のハッシュ値は8桁の、MD5のハッシュ値は32桁の16進数で表記できる。」の誤り。


md5sumの使い方

ダウンロードとインストール

ダウンロードしたZIPファイル(UnxUtils.zipまたはUnxUpdates.zip)からmd5sum.exeを取り出すだけでよい。

MD5値の計算

コマンドプロンプトに、以下のように入力する。

>md5sum ファイル名

29ab650f56718d24673e35edb4d5446d *ファイル名
のように表示される。

MD5値の検証

MD5値 ファイル名(テキストファイルの場合)
MD5値 *ファイル名(バイナリファイルの場合)
の形式(md5sum自身の出力と同じ形式)のMD5ファイルが必要。拡張子.md5を付けるのが慣例だが、なくても動作する。

コマンドプロンプトに、以下のように入力する。

>md5sum MD5ファイル名

一致すれば
ファイル名: OK

一致しなければ
ファイル名: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match

のように表示される。




解説

MD5とは、Message Digest 5の略で、Ronald L. Rivest氏が考案した、「一方向ハッシュ関数」の一種である。 ハッシュには切り刻むという意味がある。ハッシュ関数の広い意味は「大きな定義域から小さな領域に値を写像する関数」だ。これ以上はここでは触れない。

MD5の値は入力のサイズに関係なく、常に128ビット固定長で算出される。入力が1ビットでも異なれば、MD5の値も異なるため、ファイルの改ざんの有無をチェックするのに使われる。

また、MD5値からもとのデータを復元することは不可能である。この性質から「一方向」という形容詞がつけられ、パスワード認証のメカニズムにも使われている。

MD5以前にMD2、MD4があったが、これらは安全でなくなっている。

MD5はRFC1321として標準化されている。(http://rfc-jp.nic.ad.jp/rfc/rfc1321.txt)

RFC1321を非常におおざっぱに読んだところ、以下のような処理をしているようだ。

  1. もとのデータをかき混ぜる
  2. かき混ぜたものから32ビットの値を4つ作り、つなげる(32ビットx4=128ビット)。

この記事の冒頭にも書いたが、2004年8月、異なる値から同一のMD5値を得るための新しい手法が発表された(詳しくはここを参照)。ソフトウェアの配布パッケージが真正のものであるという証明には、MD5は使われなくなっていくだろう。


HOME

Copyright (C) Cybernetic Survival Network. All Rights Reserved.