ハッシュ値とは
ファイルなどデータというものは蓋を開けてみれば中身はすべて0
と1
で構成されています。
たとえば画像データも色や位置を識別する値を0
と1
を使って計算していて、その数だけデータ量が軽くなったり重くなったりします。
そのデータの構成をアルゴリズムを使って、短い固定長に変換した値をハッシュ値といいます。
任意のデータから、別の(多くの場合は短い固定長の)値を得るための操作、または、その様な値を得るための関数のこと。
一般的なハッシュ関数としてMD5
SHA-1
などが挙げられます。
インストール
今回はMD5関数を使ってハッシュ値に変換してくれるmd5sha1sum
コマンドを使えるように、Homebrew経由でインストールします。
$ brew install md5sha1sum
数分かかることもありますので気長にお待ちください。
いざ、計算
インストールできたのでファイルのハッシュ値を取得します。
test.png
がデスクトップにあると仮定して計算します。
$ cd desktop $ md5sum test.png 8848477b6b766bb767e21d13d7646bc5 test.png // 値は異なる
MD5関数で計算したこのファイルのハッシュ値は8848477b6b766bb767e21d13d7646bc5
ということがわかりました。なお、データが異なれば当然値も違うものになります。
どういう時に使うのか
「そんなん知っているよ」な方々はこちらを読んでいないでしょうから初心者に向けていちお説明しておきます。
ハッシュ値がわかったところでいつ使うんだって気持ち、初心者の方なら抱いてしまうと思います。わかります。私もそうでした。
たとえば、あるサイト上でダウンロード用にzipデータを公開していたとします。
そこに「このzipファイルのハッシュ値はMD5でABCDE
です」と記載されていたにも関わらず、ダウンロードしたzipのハッシュ値がEDCBA
だったらどうでしょう。
そうです。違うファイルだということがわかります。
つまり、公開されているハッシュ値とダウンロードしたファイルのハッシュ値とを照らし合わせることで、欠損や改ざんの有無を判断することができます。
ハッシュ値が一致したらサイト上にあるデータと同一のものと考えてまず問題ないでしょう。
ハッシュ値の一致性
ものすごい低い確率ですが、中身が違うのに同じハッシュ値になることもごくまれにあるようです。
ただ、危惧するほどの確率ではないので気にする必要は皆無でしょう。