【CUI】ファイルのハッシュ値を取得(MD5)

ハッシュ値とは

ファイルなどデータというものは蓋を開けてみれば中身はすべて01で構成されています。

たとえば画像データも色や位置を識別する値を01を使って計算していて、その数だけデータ量が軽くなったり重くなったりします。

そのデータの構成をアルゴリズムを使って、短い固定長に変換した値をハッシュ値といいます。

任意のデータから、別の(多くの場合は短い固定長の)値を得るための操作、または、その様な値を得るための関数のこと。

引用:ハッシュ関数 - Wikipedia

一般的なハッシュ関数としてMD5 SHA-1などが挙げられます。

インストール

今回はMD5関数を使ってハッシュ値に変換してくれるmd5sha1sumコマンドを使えるように、Homebrew経由でインストールします。

$ brew install md5sha1sum

数分かかることもありますので気長にお待ちください。

いざ、計算

インストールできたのでファイルのハッシュ値を取得します。

test.pngがデスクトップにあると仮定して計算します。

$ cd desktop
$ md5sum test.png 
8848477b6b766bb767e21d13d7646bc5  test.png // 値は異なる

MD5関数で計算したこのファイルのハッシュ値8848477b6b766bb767e21d13d7646bc5ということがわかりました。なお、データが異なれば当然値も違うものになります。

どういう時に使うのか

「そんなん知っているよ」な方々はこちらを読んでいないでしょうから初心者に向けていちお説明しておきます。

ハッシュ値がわかったところでいつ使うんだって気持ち、初心者の方なら抱いてしまうと思います。わかります。私もそうでした。

たとえば、あるサイト上でダウンロード用にzipデータを公開していたとします。
そこに「このzipファイルのハッシュ値MD5ABCDEです」と記載されていたにも関わらず、ダウンロードしたzipのハッシュ値EDCBAだったらどうでしょう。

そうです。違うファイルだということがわかります。

つまり、公開されているハッシュ値とダウンロードしたファイルのハッシュ値とを照らし合わせることで、欠損や改ざんの有無を判断することができます。

ハッシュ値が一致したらサイト上にあるデータと同一のものと考えてまず問題ないでしょう。

ハッシュ値の一致性

ものすごい低い確率ですが、中身が違うのに同じハッシュ値になることもごくまれにあるようです。

ただ、危惧するほどの確率ではないので気にする必要は皆無でしょう。

参考URL

md5sha1sum — Homebrew Formulae

【DLしたら】ハッシュ値の確認―理論編【要チェック】 | TECH PROjin