【HashMyFiles】ファイルのハッシュ値を取得する方法:複数人でデータを共有する場合のコピーエラーを回避する

データファイルを受け渡しする際、ファイルの作成者と、最終的な利用者との間に複数の人間が介在することがあります。

例えば、作成した動画ファイルを「私 >(HDD)> プロデューサー >(クラウドサーバ) >クライアント」とバケツリレーするようなケースです(※1)。

管理人より
※1:本来であれば、私がデータをコピーしたHDDを、直接 クライアントに渡してもらえればよいのですが、そうもいかないケースも多々あり・・・
エラー発生個所の特定が困難

こうしたケースで、クライアントさんが受け取った動画ファイルが何らかのエラーで開けなかった場合、どの段階でエラーが生じたのか特定するのはなかなか面倒です。

エラーが発生したかも知れないポイントは、ざっと考えただけでもこれだけあります。

  • 私が、HDDに動画データをコピーした際のエラー
  • プロデューサーが、受け取った動画データをローカル環境にコピーした際のエラー
  • プロデューサーが、動画データをクラウドサーバにアップロードした際のエラー
  • クライアントが、動画データをクラウドサーバからダウンロードした際のエラー

こうした事態を回避するには、大元のオリジナルとなるデータのハッシュ値を取得し、その値を全員で共有しておくことが ひとつの方策となります。

この記事では、ファイルのハッシュ値を簡単に生成&チェックできる無料ツール「HashMyFiles」の使い方を紹介します。

はじめに:ハッシュ値とは?

MEMO

「HashMyFiles」の使い方を説明する前に、「ハッシュ値」とはどういうもので、何の役に立つのかにザックリと解説しておきます。

ハッシュ値とは、ファイルに対して特殊な計算法を用いることで生成される、そのファイル固有の値です。

データが完全に同じものであれば、誰がどの環境で確認しても、そのファイルのハッシュ値は同じになります。

また、その逆に、異なる2つのファイルのハッシュ値が同じになることもありません(※2)。

管理人より
※2:厳密には、同じになる可能性がないわけではありません。しかし その確率は非常に低いものになります。
エラー発生ポイントの特定に有効

例えば、Aというファイルのハッシュ値が「af7704b4」だった場合、そのAを精確に複製コピーしたファイルA’のハッシュ値も同じく「af7704b4」となります。

しかし、コピー時にデータの欠損が発生したり、改ざんが行われた場合は、AとA’のハッシュ値は異なるものになります。

こうした特性を利用し、オリジナルデータのハッシュ値をデータ利用者間で共有しておけば、受け取ったデータが正しいものかどうか(データの欠損がないか)各環境で確認できるわけです。

管理人より
ハッシュ値は、データコピー時のエラーチェックをはじめ、パスワード認証やデジタル暗号化など、データファイルの同一性を確認する場面で広く利用されています。
ハッシュ値の生成法には種類がある

ハッシュ値の生成法(ハッシュ関数)には、いくつかの種類があります。

同じファイルでも、ハッシュ関数が異なるとハッシュ値も変わってしまうため、ハッシュ値を共有する際は、どの方法で導き出したかも記録しておく必要があります。

現在、用いられることの多いハッシュ関数は以下の通り。

  • MD5:古くからあり一般に普及している。セキュリティ安全度が低い
  • SH-1:古くからあり一般に普及している。セキュリティ安全度が低い
  • SHA-2:SHA-256、SHA-384、SHA-512などのバリエーションがある。セキュリティ安全度が高い

この記事が目的としているような、データコピー時のエラーチェック用途であれば、ハッシュ関数のセキュリティ安全度は、それほど気にする必要はないかと思います(※3)。

どのハッシュ関数を用いても 特に大きな問題はないでしょう。

管理人より
※3:高度なハッキング技術を用いると、意図的に異なる2つのファイルのハッシュ値を同じにすることも可能です。ハッシュ値は、パスワード認証やデジタル署名の技術にも用いられているため、こうした分野での使用に関しては SHA-2やSHA-3などのより新しく高度なハッシュ関数の利用が推奨されています。

「HashMyFiles」をインストールする

ハッシュ値の生成&チェックツールはいくつかありますが、この記事ではNirSoftさんで配布している「HashMyFiles」を紹介します。

ダウンロードページを開き、ページ下部までスクロールします。

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)」が見やすくておすすめです。

テキストファイル(.txt)
HTMLファイル-垂直ヘッダ(.html)

書き出したファイルにはハッシュ値のほかに、更新日時や作成日時、ファイルサイズなどの情報も記録されています。

まとめ:「ハッシュ値」を共有してデータエラーに備えよう

というわけで、データファイルの「ハッシュ値」を取得しておくと、複数人でファイルを移動/コピーする際のエラーに対処しやすくなるよ・・・というお話でした。

管理人より
「HashMyFiles」を製作してくれているNir Soferさん、そして日本語化パッチ製作者のHiroaki Nakanoさん、Gizmonさんに、この場を借りて感謝いたします。便利なツールと、快適な操作環境をありがとうございます!
コピーするだけなら「FastCopy」がおすすめ

ちなみに、データを扱うのが自分だけで「単純に、2台のドライブ間で データを精確にコピーできればよい」というのであれば、以前紹介した「FastCopy」の方が 簡単で便利です。

ヘッダ:FastCopy

「FastCopy」はコピー作業の支援ツールで、データのコピー時に自動的にベリファイ(エラーチェック)をしてくれます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です