Я пытался узнать о хэшах и солях, хранящихся в таблице пользователей, с помощью базы данных mysql. Я получаю с собой их хранение, но, похоже, не могу окунуться в голову, как проверить, когда пользователь входит в систему.
Я просмотрел и увидел, как мы храним соль и хэш отдельно и вместе. Соль, которую я производю, случайна.Проверка паролей со случайными солями
Любые идеи?
Я разместил свой код.
<?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;
?>
Соленое поколение может быть сделано в менее переполненном виде; просто 'uniqid (mt_rand(), true)' достаточно для этой цели и добавляет 'sha512', что не сделает его более случайным ;-) –