login
テーブルに2つのフィールドがあります
- パスワード
- 塩
そして、私は塩を生成するこの小さな機能を持っています
function random_salt($h_algo="sha512"){
$salt1=uniqid(rand(),TRUE);
$salt2=date("YmdHis").microtime(true);
if(function_exists('dechex')){
$salt2=dechex($salt2);
}
$salt3=$_SERVER['REMOTE_ADDR'];
$salt=$salt1.$salt2.$salt3;
if(function_exists('hash')){
$hash=(in_array($h_algo,hash_algos()))?$h_algo:"sha512";
$randomsalt=hash($hash,md5($salt)); //returns 128 character long hash if sha512 algorithm is used.
}else{
$randomsalt=sha1(md5($salt)); //returns 40 characters long hash
}
return $randomsalt;
}
ユーザーパスワードを作成するには、次のようにします
$userinput=$_POST["password"] //don't bother about escaping, i have done it in my real project.
$static_salt="THIS-3434-95456-IS-RANDOM-27883478274-SALT"; //some static hard to predict secret salt.
$salt=random_salt(); //generates 128 character long hash.
$password =sha1($salt.$userinput.$static_salt);
$salt
salt
データベースのフィールドに保存され、フィールドに$password
保存されpassword
ます。
私の問題、 functionrandom_salt()
では、これは安全なソルトを生成しない可能性がありますが、物事を複雑にしているだけだと感じています。私が正しい方向に進んでいるかどうか、誰かが私に光を投げてくれますか?
crypt
PS関数などについてのアイデアはあります。私のコードは大丈夫ですか?
ありがとう。