Windowsでファイルの同一性をハッシュ値により確認する方法
システム開発において「入力ファイルがそのまま変わらず出力されていること」のような確認を行う場合に便利なのがハッシュ値比較です。
テキストデータでも見た目では判別しずらい改行コードやタブの埋め込み等々もハッシュ値を入力と出力の双方で取得して一致していれば同一の判定が出来ます。
この記事ではファイルのハッシュ値の取得方法を説明します。
ハッシュ値とは
まず簡単にハッシュ値について解説します。
ハッシュ値とハッシュ関数
ハッシュ値を求める為の関数がハッシュ関数です。
ハッシュ関数で得られたハッシュ値には以下の特徴があります。
・同じ値(同じデータ)でハッシュ値を算出すると常に同じ値となる。
・ハッシュ値から元のデータ値を導き出すことは出来ない。
・異なるデータから求められたハッシュ値が一致することは無いに等しいくらい非常にまれである。
ハッシュ値の計算アルゴリズム
ハッシュ関数がハッシュ値を計算する際に使用するアルゴリズムはいくつかあります。
主なものを以下に紹介します。
MD5 | 128bit | 「Message Digest Algorithm5」暗号化としては解読が容易だがチェックサムとしては利用される |
SHA-1 | 160bit | 「Secure Hash Algorithm1」米国標準規格だったが暗号としては解読が容易。チェックサムとしては利用される |
SHA-2 | 256bitや512bit他 | 「Secure Hash Algorithm 2」SHA-1が改良され現在の主流。SHA-256とSHA-512がよく使われる。 |
SHA-3 | 多種 | 「Secure Hash Algorithm2」SHA-2の後継。 |
スポンサードサーチ
ハッシュ値を求める方法
ハッシュ値を求める方法はハッシュ関数に値を入力して、、と説明しましたがツールやコマンドで手軽に求めることが出来ます。
一番簡単な方法はWindows10に標準で用意されている「CERTUTIL」コマンドです。
「CERTUTIL」は色んな機能がありますがここではハッシュ値を求める方法について説明します。
求め方はコマンドプロンプトを起動して以下の構文で実行します。
実行例
「c:\temp\testdata.txt」のハッシュ値をハッシュアルゴリズム「MD5」で求める場合は以下のコマンドを実行します。
以下は実行した結果です。
矢印の箇所が求められたハッシュ値になります。
スポンサードサーチ
ハッシュ値を使ってファイルの同一性を取る
前述したとおり同一の値(ファイル)でハッシュ値を求めると同じ値が得られます。
これにより何らかの処理を通したあとにファイルの内容が変化していない検証に使用できます。
まとめ
この記事ではハッシュ値について解説しました。
ファイルが同じである検証に利用できますので是非使ってみてください。
![](http://image.moshimo.com/af-img/0866/000000049754.png)
![](http://image.moshimo.com/af-img/1115/000000026057.png)
![](http://image.moshimo.com/af-img/3874/000000059541.png)