Лучшее решение: вам следует использовать библиотеку паролей, встроенную в PHP 5.5. Они выпустили версию с обратной совместимостью для PHP 5.3 и 5.4 под названием password_compat. Однако обратите внимание, что вам понадобится 5.3.7 или выше. В bcrypt до версии 5.3.7 была проблема с безопасностью, что означает, что новая библиотека не будет работать.
Если вы используете версию до 5.3.7, следующим лучшим вариантом является Библиотека паролей от тот же автор. Но я бы предложил вместо этого обновить PHP.
Установка
Обе библиотеки можно установить, просто загрузив их, скопировав в папку вашего сайта и включив их основной файл в свой код, т.е. require('password.php');
.
Установка через Composer также возможна, если вы его используете.
Использование (при условии, что вы используете password_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
библиотеку.
person
Spudley
schedule
27.03.2013
Are these interchangeable, or do they produce different hashes?
Почему бы вам не загрузить их и не попробовать? - person nickb   schedule 27.03.20131)
и2)
, и они кажутся взаимозаменяемыми, как упоминалось в моем посте выше. - person ProgrammerGirl   schedule 27.03.20135.3.7
, иначе это было бы идеально. Что бы вы сказали, это следующий лучший вариант? - person ProgrammerGirl   schedule 27.03.20135.3.22
по твоему совету. Итак, как мне установить рекомендованную вами библиотеку и как использовать ее для шифрования паролей моих пользователей? - person ProgrammerGirl   schedule 27.03.2013