戻る

MD5, SHA1ハッシュを求める

ハッシュとは?

正確な説明はe-Wordsに任せるとして、 ここでは、簡単に、大雑把に説明してしまいます。 あるデータに対して難しい式を適用し計算することによって 得られる値のことを「ハッシュ値」といいます。

このハッシュ値の特徴としては、

といったところです。

例えば、データAとデータBの異なったデータがあった場合。 それぞれについてハッシュ値を求めれば、 その値も異なっているはずです。 そしてこのハッシュ値からデータAやデータBを 再現することはできません。 そして、このハッシュ値を求める事で、あるデータが 同じ物であるかどうかを調べることができます。

また、このハッシュ値を比較することで、 データに変更が加えられたかどうかを調べることができます。 データAとデータBが同一のものかどうかを比較するのはもちろん、 データに改編や改竄が加えられていないか、 データが壊れていないか、等を調べることができます。

MD5, SHA1ハッシュを求める

MD5ハッシュ値はmd5sumコマンドで求めます。
$ md5sum filename
で、filenameのMD5ハッシュ値を求めることができます。
e899b7881dafef175a3a336f1813556a filename
の様に出力されます。

SHA1ハッシュ値はsha1sumコマンドで求めます。
$ sha1sum filename
で、filenameのSHA1ハッシュ値を求めることができます。
365377e1a861e8d7bd36c441d7ccf5d19e0a5315 filename
の様に出力されます。

使用用途

何かのデータをダウンロードした際、そのデータと共に MD5ハッシュ値やSHA1ハッシュ値が提供されている場合があります。 その場合は、ダウンロードしてきたデータに対して、MD5ハッシュ値や SHA1ハッシュ値を求めます。その求めた値と、提供されている値が 同じかどうかを調べることで、ダウンロード中に データが壊れたなかったかどうかを調べることができます。 もちろん、ハッシュ値が異なればダウンロードしたデータが 壊れている可能性があります。

MD5やSHA1のハッシュ値を用いてデータが改竄されていないかを 確かめる方法は、セキュリティ以上安全ではありません。 その理由は この記事 を参照してください。

改竄の検出ではあまり頼りになりませんが、 ファイルが変更されたかどうかを調べる、 同一のファイルであるかどうかを調べる、 ファイルごとに異なる一意の値を求める、 といった用途には十分に使えるはずです。


戻る