MD5

MDとは Message Digest の略です(Most Dangerous ではありません)。 暗号の仲間、と言えなくもないのですが、実際にはこのMD5 の値から元のファ イルを作れない(復号化出来ない)ので特殊な使いみちで使われます。 もしあなたの手元にMD5 を計算(出てくるのは16進の数字です) するプログラム(md5 とか md5sum とかいう名前のことが多いです)あったら、ちょっと実験してみましょう。

まず、適当な文字列をmd5してみてください。例えば、

aaaaa → 594f803b380a41396ed63dca39503542

では、それの最後の文字を削ってみましょう。

aaaa → 74b87337454200d4d33f80c4663dc5e5

1文字増やすと、

aaaaaa → 0b4e7a0e5fe84ad35fb5f95b9ceeac79

途中の1文字を変えてみると、

aaaab → 11649b4394d09e4aba132ad49bd1e7db
aaaba → 01b4c32db5e1e8145ec63cb3f9ee015e
aabaa → 86c9cf00e87196f0207f3590d5fcffd3
abaaa → 23beae8fe6d02dc5878460273f17db3b
baaaa → f73fcb49a98507a304ec68cf5ea21b9a

このように、1文字変更したり追加、削除しても全く違った値になります。 そのため、自分の持ってるファイル全てのmd5 を計算してどこかに保存しておき、 次にそのファイルを使うときにmd5 を計算して同じにならなければ、その間に誰かによってそのファイルが改変された、ということがわかります(md5 の値は128ビットと決まっているので、大きなファイルそのものをもう1つ保存して比較するより便利です)。 これは特にプログラムなどで有効でしょう(ウィルスが入ればファイルが改変されるのでmd5 の値も変わるでしょう)。

APOP でも md5 を使っていますが、これは時間とパスワードを繋いだ文字列に対して md5 をかけるため、時間が変わればmd5 の値も前とは全く違うものになり、結局他人にその文字列をみられても他人がそのパスワードを使うことが出来ない、というところがメリットなわけです。

APOPへ


Yuki Mimori<mimori@puni.net>
$Id: md5.html,v 1.3 1999/10/12 06:39:52 s-v Exp $