easyhashcheckerについて

Version 1.0_d20060207

2006/2/7 copyright seraphy


本ドキュメントではeasyhashcheckerの使い方について説明します。

最新の情報についてはプロジェクト・ホームページにて確認してください。

1.本ツールの目的

easyhashcheckerは何らかのメディアを媒介してファイルを移動/複製する際に,

そのファイルが正しく受け渡されたか検証することを目的とするツールです。

つま, ファイルが破損しているか, 改竄されているか, といったことを確認できます。

ファイルの復元や, ファイルを正しく取得するためのツールではありません。

インターネットを経由するファイルの受け渡しでは, しばしば受け取ったファイルが部分的に破損している等の理由により本来の機能を果さないなどの分かりづらいトラブルも多く, ファイルが破損なく取得できたことを判断したい場合が多々あります。

このような状況において, ファイルの受け取り側が容易にファイルの破損チェックができるようにするために, 本ツールは作成されました。

2.実現方法

ファイルの検証は, ファイルの指紋といえるハッシュ値を取得し, 配布元のハッシュ値と受け取ったファイルのハッシュ値を比較することで行います。

ハッシュ値のアルゴリズムとしてMD5(Message Digest 5) もしくはSHA1(Secure Hash Algorithm 1)を用います。

これらのハッシュには, ファイルのサイズや内容が一部でも変更されると, その値もかわる性質があり, ハッシュ値が一致しなければ, その2つのファイルは異なる内容である判断できます。

(まったく同じハッシュ値でありながら異なる内容である可能性もありますが, ほぼゼロと見なされるほど低い確率です。また, 同じ内容であれば同じハッシュ値となることは確実あるため, 「同じハッシュ値でなければ少なくとも同じ内容ではない」といえます。)

ハッシュ値は, ファイルのサイズに関わらず1620バイトとコンパクトであり, またテキストファイルの形式であるため容易に配布することが可能です。

3.コンセプト/モチベーション

ファイルの内容が正しいかチェックする方法として広くmd5sha1が使われており, これらはsha1sum/md5sumといったツールを利用することで簡単に行うことができます。

しかし, Windows XP等のエンドユーザ向けの環境には, これらのツールは存在せず, また, 使うためにコマンドラインの入力が要求されます。

これはmd5sumsha1sumに慣れていない初心者には難しいものと考えらられます。

ハッシュ値の計算や検証を行うフリーソフトも多くあるものの, これらは汎用的に使うことが想定されており, インストール等の手順が必要です。

そこで, このeasyhashchecker, 配布するファイルと一緒に受け渡し先に取得してもらい, ダブルクリックするだけでファイルの検証を行い, 目的を達したあとは使い捨てることができる

『簡単で軽量』なツールとなることを目標としています。

4.対応OS

easyhashchecker, 以下のOSで動作します



Windows95/98/MEでは動作しません。

5.特徴

1.簡単であること。

ファイルの配布者はmd5/sha1の有用性について理解しており, それらのツールを使いこなせるとしても, ファイルの受け取り側が, それらの扱いに慣れているとは限りません。

そこでeasyhashcheckerでは, ダブルクリックだけでファイルの検証を行えるようにしています。

2.軽量であること。

ファイルの受け取り側の環境には特別なライブラリ等がインストール済みであることを仮定できないため, 実行ファイル(easyhashchecker.exe)単体で動作することが必要です。

また, ファイルを配布する際に, easyhashchecker.exeが目的とするファイルよりも大きなファイルであっては本末転倒ですから, 極力小さなサイズであることが望ましいといえます。

そこでeasyhashchecker.exe15k bytes程度のコンパクトなものとし, システムDLL以外に依存しないものとします。

(ただし, md5/sha1の計算などにWindows2000/2003/XP以降のAPIを用いるため, Windows 95/98/MEでは動作しません。)

3.独自仕様でないこと

ファイルの受け渡し先のユーザが初心者ではなくmd5/sha1などを使い慣れており, そのための使い慣れたツールをもっている場合には, easyhashcheckerを使わずに検証できることが望ましいでしょう。

あるいは, ハッシュ値の作成においても, すでに使い慣れたツールがある場合には, それを使いたいと思うことでしょう。

そこでeasyhashcheckerが生成/検証するmd5/sha1のフォーマットはmd5sum/sha1sumと互換性のあるものとします。(バイナリモードのみをサポートします。)

ただし, easyhashcheckerが扱うハッシュファイルにはシフトJIS(csWindows31j)を用いますので, 日本語ファイル名を使う場合は互換性が損なわれる可能性があります。

easyhashcheckerで生成・検証を行う分には日本語ファイル名は問題ありません。

4.フリーであること。

easyhashcheckerは誰でも無償で利用でき, 再配布も自由であることが望ましいため, 再配布に制限のある商用ライブラリは用いません。

また, このeasyhashcheckerにはGPL(v2)ライセンスを適用します。

6.使い方

1. ハッシュファイルの作成

これから説明するものは, ファイルを提供する側の作業です。

  1. まず, 任意の新しいフォルダを作成し, そこに配布したいファイルをコピーします。

  2. そのフォルダにeasyhashchecker.exeをコピーします。

  3. シフトキーを押しながら, easyhashchecker.exeをダブルクリックします。

    (シフトキーとコントロールキーを押しながら起動するとsha1ハッシュの作成となります。)

  4. ハッシュを作成するか問い合わせのダイアログが表示されるため「はい」を選択してください。

  5. easyhashchecker.exeのあるフォルダの, すべてのファイルのmd5ハッシュが作成されます。ファイル名はハッシュ値を計算したファイル名の末尾に「.md5」をつけたものとなります。(既存のハッシュファイルは上書きされますので注意してください。)

  6. ファイルは, 出来上がったハッシュファイルとeasyhashchecker.exeとともに配布してください。

  7.  ファイルの検証方法を説明したテキストファイルも配布すると良いでしょう。


なお, 1つのファイルに対して1つのハッシュファイルを作成しますが, これらは1個のファイルにまとめることもできます。(テキストエディタ等で連結してください。)

easyhashcheckerはハッシュファイルの拡張子だけを見ており, ファイル名は識別しません。

ハッシュファイルの中には複数のハッシュをリストすることができます。

2. ファイルの検証

これから説明するものは, ファイルを受け取った側の作業です。

  1. まず, 受け取ったファイルを新しいフォルダに保存します。

  2. 拡張子がmd5もしくはsha1のファイルも同じフォルダに保存します。

  3. easyhashchecker.exeも同じフォルダに保存します。

  4. easyhashchecker.exeをダブルクリックします。

  5. easyhashchecker.exeのあるフォルダの拡張子md5もしくはsha1からファイルの指紋を読み取り, 同じフォルダにあるファイルの指紋と比較した結果が表示されます。

  6. 検証に成功すると「検証に成功しました」と表示されます。

  7. 検証が成功したら拡張子md5もしくはsha1ファイルと, easyhashchecker.exeは不要ですので削除してかまいません。


もし, 検証に失敗しました」というエラーが発生したとき, そのダイアログに「ファイルがみつからないか読み込みに失敗しました」という表示がある場合, その左側に示される検証対象となるファイルが, そのディレクトリに存在しない可能性があります。


ハッシュ値が一致しません」という表示がある場合, ファイルの検証を行った結果, そのファイルが元ファイルのハッシュ値と一致しない, つまり, そのファイルが元ファイルとは違う内容になっていることを意味しています。


ダイジェストファイル(*.md5/*.sha1)がカレントディレクトリに1つも見つからないため検証できません」というエラーが発生した場合は, easyhashchecker.exeの起動時のカレントディレクトリに, 拡張子md5もしくはsha1のファイルがないため検証できないことを意味します。

このエラーが発生した場合は拡張子md5/sha1のファイルがあることを確認してください。

7.ソースコード

ソースコードはVisualC++.NET 2003で作成されています。

必要に応じてGPL(v2)に従って修正してください。

バグ等があればプロジェクトホームページのバグトラッキングに報告していただけると幸いです。

また, もし修正された場合には, 必ず, ソースコードをzip等にアーカイブしたものをパッチとして投稿してください。(「パッチ」である必要はありません。丸ごと一式でかまいません。)

8.ライセンス

このプログラムはフリーウェアです。

あなたはこれを, フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2)の定める条件の下で再頒布または改変することができます。

このプログラムは有用であることを願って頒布されますが, *全くの無保証* です。

商業可能性の保証や特定の目的への適合性は, 言外に示されたものも含め全く存在しません。

詳しくはGNU 一般公衆利用許諾契約書をご覧ください。


著作権はseraphyにあります。

ライセンスはGPL(v2)です。

商用, 非商用ともに自由にご利用, 再配布いただいてかまいません。

ソースコードを修正する場合はGPL(v2)に従ってください。

実行ファイルのみの再配布も可能ですが, その場合は以下のURLにアクセスできるように記載してください。


このソフトウェアに関する詳細, および問い合わせについては,

http://sourceforge.jp/projects/easyhashchecker/ で確認してください。