MD5の逆引きの話

  • このエントリーをはてなブックマークに追加

PerlCPANに、こんなライブラリがあった。

Digest-MD5-Reverse-1.3

要はMD5の得られたハッシュ値から、MD5に渡された値を得られる機能を持つらしい。
ソースのサンプルはこんな感じ。

    use Digest::MD5::Reverse;
print "Data is ".reverse_md5("acbd18db4cc2f85cedef654fccc4a4d8")."\n";
# Data is foo

なんで、こんなことができるのかな?と、思いつつソースとかドキュメントを読むと、世界各地で公開されているハッシュ値が収められた辞書を運営しているWebサービスがあってそこにリクエストを出して、逆引きの結果を読んでいるらしい。
なるほど、それであれば確かに不可能ではないのはわかる気がする。

で、もっとお気軽に逆引きする方法がblogに紹介されていた。

あまり感心しない用途だとは思われますが、MD5 Hash 値を逆変換したい、と思ってる人に朗報です。Hash 値を Google で検索してみてください。結構な確率でヒットするそうな。つっても Salt 無しの場合だけですけど。

なるほど...。ちょっと試してみた。
たとえば、"digital"という文字列をMD5に通すと、次の値が得られる。

<?php
print md5("digital");
?>

こうすると出力されるhash値は、"e0e1d64fdac4188f087c4d44060de65e"という値だ。
これを、googleの検索ワードとして渡してやると、次の結果が得られる。
f:id:hideack:20090114224523j:image

まぁ、ものの見事に見つかりましたがな。
なので、MD5そのものの強さ云々という問題もありますが、そもそもハッシュ関数を通して何かするときは、saltを対象文字列に付与しておきましょうということで。

(Visited 156 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*