Я написал этот код некоторое время назад, который я сейчас оживляю для нового проекта, но он не работает, и я не могу, чтобы жизнь меня определяла, почему это не будет проверьте хэш.Blowfish encryption - hash создается, но не проверяет
Ниже перечислены 2 функции при регистрации первой функции passwordEncrypt().
При попытке входа в систему вызывается функция checkPassword(), вместо входа в систему и эхо-ответа «да» она попадает в раздел, где он имеет значение «нет».
Так что, пожалуйста, если свежий набор глаз может заглянуть в большое спасибо!
// Encrypt user password
function passwordEncrypt($password) {
// set the salt
$salt = substr(md5(time()), 0, 22);
// encrypt using blowfish with a load of 10
$password = crypt($password, '$2a$10$' . $salt);
// return the encrypted hash
return $password;
}
/*
Check password function when logging in
first we select the password from the supplied username from the database
// get the row and set the hash to the currect password from the database
//run the salts etc and check to see if the passwords match
*/
function checkPassword($userName, $password, $db){
$sql = 'SELECT password FROM users WHERE userName = :userName';
$stmt = $db->prepare($sql);
$stmt->bindValue(':userName', $userName, PDO::PARAM_STR);
$stmt->execute();
$numRows = $stmt->rowCount();
if ($numRows > 0) {
$row = $stmt->fetch();
$hash = $row['password'];
// run the hash function on $password
$fullSalt = substr($hash, 0, 29);
$new_hash = crypt($password, $fullSalt);
// Check that the password matches
if($hash == $new_hash) {
echo 'yes';
exit;
return true;
} else {
echo 'no';
exit;
return false;
}
} else {
echo 'way';
exit;
return false;
}
}
Я зарегистрировал пароль, а затем попробовал и это то, что она возвращает
Пароль: $ 2a $ 10 $ 023d3086e8462207a1fecueWH4Ub40MWbQJ7F9 Поступил: $ 2a $ 10 $ 023d3086e8462207a1fecueWH4Ub40MWbQJ7F9hapWU3lYxlg3AAa нет
Так что нет добавление на hapWU3lYxlg3AAa
Что длина столбца Пароль и длина хэш строки? –
Кстати, ваши выходы отменяют ваши доходы. –
если вы знаете, как пинговать кого-то, хорошо. Ваш вопрос не подходит для получения магического ответа. –