完全一致

md5-title
アニメ『はんだくん』 「ばらかもん」のスピンオフです。「ばらかもん」の方は、一度も見たことがなく、いきなりこのアニメから入ったので戸惑いましたが、やはりギャグアニメってのは、すんなり理解できて良いですね。上の画像は一話に登場した「森 麻衣子」と「ジュリ」のつもりで描きました。二人は同じ女子高生ですが、頭の大きさが2倍以上違います。この二人が異様に面白いので視聴継続予定です。

同じ女子高生でも「麻衣子」と「ジュリ」は中身が異なりますが(外見もですが)、今回は、ファイル名やサイズ、見た目は同じだけど異なるファイルについて考えます。

※下の画像の2つの端末ウィンドウは、それぞれ別々のPCと考えてください。
まだLinuxを触って間もない頃、別々のPCにあるファイルが一致しているかどうか確認したいとき、ファイルサイズで確認を済ませていたことがありました。

md5-1
一見、タイムスタンプは違えども、ファイルサイズは各ファイル一致していますね。しかし、それは偶然の一致です。ファイルの内容は一致しているかわかりませんね。サイズの小さいテキストファイルなら、PCを見比べてってことも手間に思わないかもしれません。しかしサイズの大きいファイルやバイナリファイルは、目視確認はお手上げです。対PCをマウントして、diff等した方が早いような気もしてきます。
そんな時に、ハッシュが役に立ちます。今回はMD5を使います。

md5sumコマンドで、各ファイルのハッシュ値を確認してみましょう。

md5-2
file1.txtのハッシュ値は、PC1側が00846〜で、PC2側が67fb5〜となっています。値が一致していませんので、PC1とPC2のfile1.txtは一致していません。
file2.txtに関しても、PC1側が01a16〜で、PC2側が9dbda〜ですので、PC1とPC2のfile2.txtは不一致ということになります。しかし、PC1側のfile2.txtとfile3.txtのハッシュ値は一致しています。これはfile2.txtとfile3.txtの内容が一致していることを意味します。同様にPC2側のfile2.txtとfile3.txtも一致しています。

md5sumコマンドは、文字列またはファイルを指定できます。
HELLOという文字列のMD5ハッシュ値を求めてみましょう。

~$ md5sum <<<HELLO
0084467710d2fc9d8a306e14efbe6d0f  -

HELLOではなく、HELLP(Oの文字コードに1を足した文字コード)のハッシュ値はどうなるでしょうか。

~$ md5sum <<<HELLP
13b8176db50c0c181b645bf450225c71  -

HELLPはHELLOのたった一文字違いなのですが、それぞれのハッシュ値は一文字も一致しません。

これまではファイルの内容を見ずに、一致確認をしました。画像等ではどうでしょうか。画像はサムネイルで画像の内容が見えてしまいますので、似たような画像を視認で一致していると思いがちです。しかし、以下の2つの画像のようにMD5ハッシュ値は異なっているので、画像も異なっています。

md5-pict1

md5-pict1.png

f50361782e1dc64ffc2ffc0588398262
md5-pict2

md5-pict2.png

564f1b48f3852f9165696a32fe4b25e7

「麻衣子」と「ジュリ」は、完全に不一致ですが、仲良しであるということは、二人の中に一致する何かがあるのでしょう。

One response to “完全一致

  1. Unebaievlble how well-written and informative this was.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA