私は、mysql DB 内のユーザー テーブルに格納されているハッシュとソルトについて学習しようとしています。それらを保存することはできますが、ユーザーがログインしたときに検証する方法に頭を悩ませているようには見えません。
ソルトとハッシュを別々に、または一緒に保存することについて調べて見ました。私が生産している塩はランダムです。
何か案は?
私は自分のコードを投稿しました。
<?php
$password = 'passwordwhatever';
//generate the salt
function gen_salt() {
$salt = uniqid(mt_rand(), true) . sha1(uniqid(mt_rand(), true));
$salt = crypt('sha512', $salt);
return $salt;
}
//generate the hash
function gen_hash($salt, $password) {
$hash = $salt . $password;
for($i = 0; $i < 100000; $i++) {
$hash = crypt('sha512', $hash);
}
$hash = $salt . $hash;
return $hash;
}
$password = gen_hash(gen_salt(), $password);
echo $password;
?>