(краткое содержание)
Функция md5()
У данной функции следующий синтаксис:
string md5(string $str [, bool $raw_output = false])
Функция имеет всего два параметра:
- $str – строка, которая преобразуется в хеш-код;
- $raw_output – тип возвращаемого значения (false – 32 символа, true – 16
символов).
Работу таких функций проще всего рассматривать на примерах:
Листинг 30.1. Пример работы функции md5()
$pass1 = "fklweSNFkjbsdf";
$pass2 = "fsdbkFDSAbkDKLJF";
$pass3 = "fklweSNFkjbsdf";
1
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)
Функция hash()
Данная функция является универсальным способом хеширования
информации и дает возможность использовать более 20 различных алгоритмов. У
функции следующий синтаксис:
hash(string $alg, string $str [, bool $raw_output = false])
Данная функция отличается от md5() только наличием дополнительного
параметра $alg, который представляет собой имя алгоритма хеширования,
например, md5, sha256, haval160,4 и др. Полный список алгоритмов Вы можете
найти в документации.
Хеширование паролей
Начиная с версии 5.5.0 в PHP для хеширования паролей рекомендуется
использовать специальные алгоритмы.
Для этого создан специальный набор функций password. Для хеширования и
проверки хеша пароля предназначены следующие из них:
А) Функция string password_hash(string $pass, int $algo [, array $options]) – создает
хеш пароля с использованием таких параметров, как стоимость и соль, создающих
дополнительный уровень защиты данных от взлома и кражи.
Содержит следующие параметры:
- $pass – переменная, содержащая введенный пароль в строковом типе;
- $algo – алгоритм хеширования и предлагает следующие варианты:
- PASSWORD_DEFAULT – используется алгоритм хеширования,
установленный по умолчанию и может меняться на более сильный
алгоритм в зависимости от версии PHP. Так, в версии 5.5.0 используется
алгоритм bcrypt. По причине того, что в большинстве случаев, пароли
хранятся либо в базах данных, либо в закрытых файлах, рекомендуется
задавать длину поля пароля не менее 60 символов, а рекомендуется 255.
- PASSWORD_BCRYPT – использует алгоритм CRYPT_BLOWFISH. В результате
работы данного алгоритма формируется строка длиной 60 символов,
либо false, в случае возникновения ошибки.
- PASSWORD_ARGON2I и PASSWORD_ARGON2ID – используют алгоритмы
Argon2i и Argon2id. Использование этих алгоритмов возможно, если в
настройках PHP включена поддержка Argon2.
$options – массив с опциями хеширования. Если не задан, то используется
стандартная соль и стоимость. Полный список опций хеширования можно найти в
перечне констант алгоритмов хеширования паролей.
Б) Функция bool password_verify(string $pass, string $hash)
Проверяет соответствие пароля $pass хешу $hash.
Стоит отметить, что функция работает в паре с password_hash(). Так, хеш,
создаваемый указанной функцией уже содержит в себе нужную соль и стоимость и,
соответственно, для работы password_verify() уже нет необходимости
дополнительно их указывать.
Рассмотрим работу этих функций в паре в листинге 30.2.
2
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)