+7(983)178-57-68
Новые горизонты успешного бизнеса!
Хэширование паролей в php 5.5 Функция password_hash()
В данной статье мы расскажем об основах использования нового API для хеширования в PHP. Данный способ хэширования паролей упростит Вам жизнь на столько, на сколько это возможно. Берем наш пароль -> получаем хэш -> записываем в базу. Никаких лишних манипуляций.• password_hash() — используется для хэширования пароля.
• password_verify() — используется для проверки пароля на соответствие хэшу.
• password_needs_rehash() — используется для проверки необходимости создать новый хэш.
• password_get_info() — возвращает имя алгоритма хеширования и различные параметры, используемые при хэшировании.
<?php
// наш пароль
$pass="123456";
$hash=password_hash($pass, PASSWORD_DEFAULT);
?>
Вот так легко и просто. Первым параметр - строка пароля, который необходимо захэшировать, а второй параметр определяет алгоритм, который должен быть использован для генерирования хэша.Алгоритм по умолчанию, в настоящее время, BCrypt, но более сильный алгоритм может быть установлен по умолчанию, когда-нибудь в будущем, и, возможно, он будет генерировать большие строки. Если вы используете PASSWORD_DEFAULT, обязательно храните хэш в колонке, размером больше 60 символов. Лучше всего установить размер 255. Также можете использовать PASSWORD_BCRYPT в качестве второго параметра. В этом случае результат всегда будет 60 символов.
Итак, если Вам показалось этого мало, можете использовать свою собственную соль
<?php
$op=[
'salt' => gensalt(), // здесь Ваша функция генерации соли
'cost' => 12
];
$hash=password_hash($pass, PASSWORD_DEFAULT, $op);
?>
Готово.Теперь проверим вводимый пользователем пароль. Все что нам нужно - это взять хэш пароля из нашей базы и сравнить его с введённым паролем.
<?php
// $hash - это хэш пароля, полученный из базы
if (password_verify($pass, $hash)):
print "Верный пароль!";
else:
print "Неверный пароль :(";
endif;
?>
password_needs_rehash()Функция password_needs_rehash() проверяет, использует ли хэш пароля конкретный алгоритм, соль и стоимость вычисления.
<?php
if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])):
$hash=password_hash($pass, PASSWORD_DEFAULT, ['cost' => 12]);
endif;
?>
Данную операцию можно делать при входе пользователя в систему, ведь только тогда мы получаем доступ к паролю в явном виде.password_get_info()
Функция password_get_info() принимает хэш и возвращает ассоциативный массив из трех элементов:
• algo — константа, которая идентифицирует конкретный алгоритм
• algoName — название используемого алгоритма
• options — различные опции, используемые при генерации хэша
Остались вопросы? Спрашивайте!
Понравилась статья? Расскажи другим :)
Опубликовано: | Просмотров: 5782