データファイルを受け渡しする際、ファイルの作成者と、最終的な利用者との間に複数の人間が介在することがあります。
例えば、作成した動画ファイルを「私 >(HDD)> プロデューサー >(クラウドサーバ) >クライアント」とバケツリレーするようなケースです(※1)。
こうしたケースで、クライアントさんが受け取った動画ファイルが何らかのエラーで開けなかった場合、どの段階でエラーが生じたのか特定するのはなかなか面倒です。
エラーが発生したかも知れないポイントは、ざっと考えただけでもこれだけあります。
- 私が、HDDに動画データをコピーした際のエラー
- プロデューサーが、受け取った動画データをローカル環境にコピーした際のエラー
- プロデューサーが、動画データをクラウドサーバにアップロードした際のエラー
- クライアントが、動画データをクラウドサーバからダウンロードした際のエラー
こうした事態を回避するには、大元のオリジナルとなるデータのハッシュ値を取得し、その値を全員で共有しておくことが ひとつの方策となります。
この記事では、ファイルのハッシュ値を簡単に生成&チェックできる無料ツール「HashMyFiles」の使い方を紹介します。
記事の目次
はじめに:ハッシュ値とは?
「HashMyFiles」の使い方を説明する前に、「ハッシュ値」とはどういうもので、何の役に立つのかにザックリと解説しておきます。
ハッシュ値とは、ファイルに対して特殊な計算法を用いることで生成される、そのファイル固有の値です。
データが完全に同じものであれば、誰がどの環境で確認しても、そのファイルのハッシュ値は同じになります。
また、その逆に、異なる2つのファイルのハッシュ値が同じになることもありません(※2)。
例えば、Aというファイルのハッシュ値が「af7704b4」だった場合、そのAを精確に複製コピーしたファイルA’のハッシュ値も同じく「af7704b4」となります。
しかし、コピー時にデータの欠損が発生したり、改ざんが行われた場合は、AとA’のハッシュ値は異なるものになります。
こうした特性を利用し、オリジナルデータのハッシュ値をデータ利用者間で共有しておけば、受け取ったデータが正しいものかどうか(データの欠損がないか)各環境で確認できるわけです。
ハッシュ値の生成法(ハッシュ関数)には、いくつかの種類があります。
同じファイルでも、ハッシュ関数が異なるとハッシュ値も変わってしまうため、ハッシュ値を共有する際は、どの方法で導き出したかも記録しておく必要があります。
現在、用いられることの多いハッシュ関数は以下の通り。
この記事が目的としているような、データコピー時のエラーチェック用途であれば、ハッシュ関数のセキュリティ安全度は、それほど気にする必要はないかと思います(※3)。
どのハッシュ関数を用いても 特に大きな問題はないでしょう。
「HashMyFiles」をインストールする
ハッシュ値の生成&チェックツールはいくつかありますが、この記事ではNirSoftさんで配布している「HashMyFiles」を紹介します。
http://www.nirsoft.net/utils/hash_my_files.html
ダウンロードページを開き、ページ下部までスクロールします。
Feedback項目の下に、ダウンロード用のリンクがあるので、自分の環境にあったファイルを選んで入手します。
「hashmyfiles-x64.zip」を解凍すると、HashMyFiles.exeが作成されます(こちらがアプリ本体になります)。
HashMyFilesアプリは、操作も簡単なので英語版のままでも迷うことはないかと思いますが、日本語化パッチも用意されています。
ダウンロードページ最下部の表から「Japanese」の選び、リンク先ファイル(hashmyfiles_japanese.zip)をダウンロードします。
hashmyfiles_japanese.zipを解凍すると、HashMyFiles_lng.iniというファイルができますので、これをHashMyFiles.exeと同じ場所に移動します。
以上で、アプリのインストールは完了です。
「HashMyFiles」の使い方
ハッシュ値を生成する
使い方はとても簡単です。HashMyFiles.exeを起動し、ハッシュ値を算出したいファイルを空欄部分にドラッグ&ドロップします。
自動で計算が行われ、ファイルごとのハッシュ値が表示されます。
ハッシュ関数を限定する
HashMyFilesは、複数のハッシュ関数(生成法)に対応しており、デフォルトでは以下の6つの関数のハッシュ値が一覧表示されます。
- MD5/SHA1/CRC32/SHA-256/SHA-512/SHA-384
「こんなにたくさんのハッシュ関数は必要ない」という場合は「オプション>算出するハッシュの種類」をクリックし、任意のもののチェックを外します。
ハッシュ値を保存する
生成したハッシュ値は、テキストデータ(.txt)のほか、HTML、XML、CSVの形式で書き出すことができます。
ハッシュ値を保存したいデータを選び(複数選択可)、「画面上を右クリック > 選択した表示項目を保存」を選択します。
保存時のオプション項目から、ファイルの種類を選ぶことができます。
- テキストファイル(.txt)
- タブ区切りのテキストファイル(.txt)
- 表示形式のテキストファイル(.txt)
- HTMLファイル-水平ヘッダ(.html)
- HTMLファイル-垂直ヘッダ(.html)
- XMLファイル(.xml)
- カンマ区切りファイル(.csv)
データの同一性をスタッフ間で共有する目的であれば、「テキストファイル(.txt)」もしくは、「HTMLファイル-垂直ヘッダ(.html)」が見やすくておすすめです。
書き出したファイルにはハッシュ値のほかに、更新日時や作成日時、ファイルサイズなどの情報も記録されています。
まとめ:「ハッシュ値」を共有してデータエラーに備えよう
というわけで、データファイルの「ハッシュ値」を取得しておくと、複数人でファイルを移動/コピーする際のエラーに対処しやすくなるよ・・・というお話でした。
ちなみに、データを扱うのが自分だけで「単純に、2台のドライブ間で データを精確にコピーできればよい」というのであれば、以前紹介した「FastCopy」の方が 簡単で便利です。
「FastCopy」はコピー作業の支援ツールで、データのコピー時に自動的にベリファイ(エラーチェック)をしてくれます。