Итак, я использую новый PHP 5.5 Password Hashing API, и я не уверен, правильно ли я это понял.
Я пытался автоматически перехешировать каждый логин, и иногда у меня ничего не получалось, даже когда хеширование все равно оказывается одинаковым, я чувствую, что делаю что-то не так.
Это может быть функция запроса, в которой я, вероятно, ошибся, потому что хэши даже не меняются, когда я проверяю phpMyAdmin.
if (password_needs_rehash($result_row->user_password_hash, PASSWORD_DEFAULT))
{
$newhash = password_hash(
$_POST['user_password'], PASSWORD_BCRYPT,
['cost' => 12, 'salt' => 'superfreakingsonicdude',]
);
// update hash in database
$this->connection->query(
"UPDATE users SET user_password_hash='" . $newhash .
"' WHERE user_name='".$result_row->user_name."'"
);
}
Здесь вы можете найти все функции.
PASSWORD_DEFAULT
, и если нет, вы сохраняете хэш с помощьюPASSWORD_BCRYPT
. Если они не совпадают (например, если в более новой версии PHPPASSWORD_DEFAULT
установлено наPASSWORD_ROT13
), вы всегда будете повторно хэшировать пароль, поскольку он никогда не хэшировался с использованиемPASSWORD_DEFAULT
. - person Joachim Isaksson   schedule 13.02.2013PASSWORD_DEFAULT
илиPASSWORD_BCRYPT
, не смешивайте их) - person Joachim Isaksson   schedule 13.02.2013