../../image/benilogo.gifPHP4 について


PHP の md5( ) について。

 PHPのマニュアル md5( ) 

md5 ハッシュ関数 
アルゴリズムは、まぁ さておき、実際にどんなことになるのかを試してみる。
test2/md5.php 結果
<?php

  echo "md5(\"\") とするとどうか? ",md5(""),"\n";
  echo "md5(\"0\") とするとどうか? ",md5("0"),"\n";
  echo "md5(\"1\") とするとどうか? ",md5("1"),"\n";
  echo "md5(\"akaijejoegre\") とするとどうか? ",
            md5("akaijejoegre"),"\n";


md5("") とするとどうか? d41d8cd98f00b204e9800998ecf8427e
md5("0") とするとどうか? cfcd208495d565ef66e7dff9f98764da
md5("1") とするとどうか? c4ca4238a0b923820dcc509a6f75849b
md5("akaijejoegre") とするとどうか? 9b36b7b8216d58fdedf48b3227b7776a


この通りで引数を ????? として 32桁の推測しがたい16進数値に置き換える。
このアルゴリズムは google 等で調べればいっぱい参考記事があります。 読んでも理解出来ないし、また理解する必要もない。
ともかく 引数の文字列を いじくり倒して 32桁の16進数表記で出力される。・・・・ とでも理解すればいいだろう。

 引数から ハッシュ値は出来るが、 ハッシュ値から引数を推測することは非常に困難である。・・・ 等 書いてある。
でも、この前身の md4 とかは 破られた とかの記事もありますね。 このあたりは "md5ハッシュアルゴリズム"で  google 等を
検索してみるといっぱい出てきます。 SHA1 とか SHA256 SHA384 SHA512 etc......

マニュアルの uniqid()の サンプルにあるように
マニュアル例
$token = md5(uniqid("")); // ランダム要素なし
$better_token = md5(uniqid(rand(),1)); // 推測が困難であり、より優れている。
 こうすると、それこそ、わけわからん文字列が出来る。


入力である 引数 が固定されているなら 出力である ハッシュ値も固定されるようです。 つまり
入力 引数 出力 ハッシュ値
"" d41d8cd98f00b204e9800998ecf8427e
"0" cfcd208495d565ef66e7dff9f98764da
"1" c4ca4238a0b923820dcc509a6f75849b
"akaijejoegre" 9b36b7b8216d58fdedf48b3227b7776a
 こんな様になる。 当然ながら 入力の引数が変わると 出力は推測
 出来ないくらいに変化します。 
 上記マニュアル例だと 入力引数が rand() で乱数を意味不明の
 uniqid( ) にして md5( ) とすると ・・・・ わけわからん数値( 16進表記)
 ということですね。



























目次に戻る

2005/08/21start ********* Last Update 2006/11/12 19:30 JST

(C) Y.Kondou,2005,2006 All Rights, Reserved.
その他、お気づきの点がありましたら連絡先はこちらから