解決済みの質問
例えば 0 や 1 a b などのmd5の値を掲載したとします。
そこで 1ab のmd5値を求めることは可能でしょうか?
なぜかと言いますと、パスワードをmd5で暗号化して保存しているのですが、ファイルアップローダの名前を保存する際、半角英数字で入力してもらい、それをmd5で変更しています。そうなると誰でもmd5のパターンを把握する事が出来md5でも暗号化の意味が無くなってしまうのかと心配なのですが、大丈夫でしょうか?
投稿日時 - 2009-02-19 12:05:02
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に持たせる事で解読を難しくさせます。
このような仕様はクレジットカード決済システムなどでも使われている方法です。
投稿日時 - 2009-02-19 12:52:01
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
そもそもmd5は暗号化ではないですよ。ただのハッシュ値です。
暗号化なら、
http://pear.php.net/package/Crypt_Blowfish
とか利用された方がいいんではないでしょうか?
投稿日時 - 2009-02-19 18:00:19