- ベストアンサー
md5についての理解と使い方
- md5、sha1、sha256などのハッシュ関数は異なるサーバーでも異なる結果になります。
- md5を使用してIPから値を作成した場合、他の人に元のIPがわかることはありません。
- md5を使用してトリップを作成する際には、さらに安全性を高める方法があるかもしれません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
訂正。先頭2文字はソルトになるのでsubstrで取ってあげてください。 $elements = array( $_SERVER['REMOTE_ADDR'], date('Y-m-d', $_SERVER['REQUEST_TIME']), 'ユーザーが入力したキー', ); $hash = substr(crypt(implode("\0", $elements), 'tY'), 2);
その他の回答 (3)
md5やsha1で桁数を減らしてしまうと衝突する可能性が高まるので、cryptを使えばいいと思います。 $elements = array( $_SERVER['REMOTE_ADDR'], date('Y-m-d', $_SERVER['REQUEST_TIME']), $key ); $hash = crypt(implode("\0", $elements), 'tY'); こんな感じでどうぞ。 (最後の 'tY' 半角英数字と「スラッシュ」「ピリオド」から2文字を選択すれば何でもいいです)
お礼
回答ありがとうございます いろいろやり方あるのですね 勉強になりました
- agunuz
- ベストアンサー率65% (288/438)
あ、失礼。 最後の「base64_encode」は問題ないです(ちょっと勘違い)。まぁ8桁あれば・・・いいかな(桁数にコストがかかるケースもあるだろうし)。
お礼
桁数はちょっとかんがえてみます
- agunuz
- ベストアンサー率65% (288/438)
>サーバーが違うと別の結果になるのでしょうか? 同じ形式を使えば同じ結果になります。 >ipから値を作るとプログラムわかる他の人に元のIPがわかってしまいますか? 普通は「プログラムがわかる」程度の人にはわかりません。また一般的には例示されたように日付や一種のキーも含めて計算させますから、まずわかりません。 http://ja.wikipedia.org/wiki/MD5 最後にbase64_encodeして8桁だけ取り出すのがなんか無駄に思えます。衝突の発生頻度が高くなりそうでいやだなぁ・・・
お礼
回答ありがとうございます 同じ値になるのですね。勉強になりました >まずわかりません 安心しました。ありがとうございました
お礼
参考になりました。ありがとうございます