Ответ 1
Лучшее решение: вы должны использовать библиотеку паролей, которая встроена для PHP 5.5. Они выпустили версию обратной совместимости для PHP 5.3 и 5.4 под названием password_compat. Однако учтите, что вам понадобится 5.3.7 или новее. Возникла проблема безопасности с bcrypt до 5.3.7, что означает, что новая библиотека не будет работать.
Если вы используете версию до 5.3.7, следующая лучшая опция - Password Lib того же автора. Но я бы предложил обновление PHP вместо этого было бы лучшим вариантом.
Установка
Обе библиотеки можно установить, просто загрузив их, скопировав их в папку своего сайта и включив их основной файл в ваш код - то есть require('password.php');
.
Установка через Composer также является опцией, если вы используете его.
Использование (предположим, что вы собираетесь с паролем_compat):
Чтобы создать пароль:
$hash = password_hash($password, PASSWORD_BCRYPT);
Чтобы проверить пароль:
if (password_verify($password, $hash)) {
/* Valid */
} else {
/* Invalid */
}
И это в основном все, что вам нужно знать. Библиотека обрабатывает все остальные детали, как вы засовываете пароль, и т.д.
[EDIT] Если вам нужно изменить алгоритм "стоимость" в соответствии с вашим комментарием, добавьте дополнительный параметр в вызов password_hash()
, чтобы указать его, например:
password_hash($password, PASSWORD_BCRYPT, array("cost" => 11));
Полная документация доступна на странице загрузки, которую я связал выше.
По-настоящему полезно использовать библиотеку password_compat, так как она специально разработана для того, чтобы иметь тот же API и функциональные возможности, которые встроены в PHP в качестве стандарта в PHP 5.5. Поэтому, если вы используете password_compat, когда находитесь на PHP 5.3 или 5.4, при переходе на PHP 5.5 у вас уже будет правильный код в вашей системе, чтобы использовать новые встроенные функции пароля. Единственное различие заключается в том, что вам не понадобится include
библиотека.