• ベストアンサー

md5解読

例えば 0 や 1 a b などのmd5の値を掲載したとします。 そこで 1ab のmd5値を求めることは可能でしょうか? なぜかと言いますと、パスワードをmd5で暗号化して保存しているのですが、ファイルアップローダの名前を保存する際、半角英数字で入力してもらい、それをmd5で変更しています。そうなると誰でもmd5のパターンを把握する事が出来md5でも暗号化の意味が無くなってしまうのかと心配なのですが、大丈夫でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

md5から文字列を特定するのは、そうそう容易いもんでもないですが、どうしてもなら、独自のアルゴリズムを作成して、それにmd5を付加すれば、解読は難しくなると思います。 ざっとこんな感じ・・・ //独自IDを決める $my_id='abc123'; //独自IDをmd5 $my_id_md5=md5($my_id); //パスワード $pass='password'; $pass_md5=md5($pass); //独自IDとパスワードを組み合わせる $pass_date=$my_id_md5.$pass_md5; この$pass_dateをDB保存用とします。 あとはこのDBデータと先程の独自IDを組み合わせてパスワードチェックさせます。 //DBデータが$dbpassに格納されていると仮定。また、送信されたパスワードは$get_passとします $get_md5=md5($get_pass); if($dbpass!=$my_id_md5.$get_md5){ echo 'パスワードが違います'; }else{ echo 'パスワードが一致しました'; } もうおわかりかと思いますが、特定されない文字列を$my_idに持たせる事で解読を難しくさせます。 このような仕様はクレジットカード決済システムなどでも使われている方法です。

その他の回答 (1)

回答No.2

そもそもmd5は暗号化ではないですよ。ただのハッシュ値です。 暗号化なら、 http://pear.php.net/package/Crypt_Blowfish とか利用された方がいいんではないでしょうか?

関連するQ&A