У меня есть страница регистра, который пользователь ввести пароль, чтобы я хэш этот пароль и время хэшируются в базе данныххэширования паролей с помощью крипты и Blowfish
, но когда я пытаюсь войти в него дать мне, что пароль сделать не совпадают, и когда я повторяю это, это не совпадает, как я написал новый пароль.
как исправить эту проблему может кто-нибудь мне помочь ???
функция cryptpass в регистре
function cryptPass($input, $rounds = 9)
{
$salt = "";
$saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9'));
for($i = 0; $i<22; $i++)
{
$salt .=$saltChars[array_rand($saltChars)];
}
return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt);
}
$hashedpass = cryptPass($pass1);
склепа функции в логин
function cryptPass($input, $rounds = 9)
{
$salt = "";
$saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9'));
for($i = 0; $i<22; $i++)
{
$salt .=$saltChars[array_rand($saltChars)];
}
return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt);
}
$hashedpass = cryptPass($pass);
echo $hashedpass;
Это не так. соль должна быть рандомизирована для каждого отдельного хэша. http://en.wikipedia.org/wiki/Salt_(cryptography) 'Новая соль генерируется случайным образом для каждого пароля' – rbedger
Конечно, вы можете создать новую соль для каждого пароля, но вы ДОЛЖНЫ использовать ту же соль первоначально используемый для хранения пароля при хэшировании значения, которое вы сравниваете. В противном случае хеши будут разными, и проверка не будет выполнена правильно. –
. при использовании рандомизированных хешей полезно использовать солярий. использование той же соли делает то же самое, что и без соли. все дело в том, чтобы усложнить кому-то проверку хешированных паролей и выяснить алгоритм хеширования. – rbedger