Функция password_hash() в PHP
Алгоритмы хеширования паролей в PHP
Функция password_hash() используется для создания хеша пароля.
Требования к версии PHP: PHP 5 >= 5.5.0, PHP 7
Синтаксис
string password_hash ( string $password , int $algo [, array $options ] )
password_hash() использует достаточно стойкий односторонний алгоритм хеширования для создания хеша пароля. password_hash() совместима с crypt(). Поэтому хеши паролей, созданные с помощью crypt(), также можно использовать с password_hash().
Поддерживаемые в настоящее время алгоритмы:
-
PASSWORD_DEFAULT- Использует алгоритм bcrypt (по умолчанию в PHP 5.5.0). Обратите внимание, что эта константа изменится, когда PHP добавит новые, более стойкие алгоритмы. Поэтому длина результата, генерируемого с использованием этой константы, может измениться в будущем. Поэтому столбец в базе данных, в котором хранится результат, может превышать 60 символов (предпочтительно 255 символов). -
PASSWORD_BCRYPT- ИспользуйтеCRYPT_BLOWFISHалгоритм для создания хеша. Это создаст хеш, совместимый с использованием префикса "$2y$".crypt()Результатом будет строка из 60 символов или FALSE при неудаче.FALSE。 -
PASSWORD_ARGON2I- Используйте алгоритм хеширования Argon2 для создания хеша.
Опции, поддерживаемые PASSWORD_BCRYPT:
-
salt (string) - Вручную предоставьте соль для хеширования пароля. Это позволяет избежать автоматической генерации соли.
Если это значение опущено, password_hash() автоматически сгенерирует случайную соль для каждого хеша пароля. Это намеренный режим работы.
Примечание: Опция salt устарела начиная с PHP 7.0.0. Теперь лучше просто использовать соль, генерируемую по умолчанию.
-
cost (integer) - Представляет стоимость, используемую алгоритмом. Примеры значений cost можно найти на странице crypt().
Если опущено, значение по умолчанию — 10. Эта стоимость является хорошей базовой величиной, но вы можете увеличить это значение в зависимости от вашего оборудования.
Опции, поддерживаемые PASSWORD_ARGON2I:
-
memory_cost (integer) - Максимальный объем памяти (в байтах), используемый при вычислении хеша Argon2. Значение по умолчанию:
PASSWORD_ARGON2_DEFAULT_MEMORY_COST。 -
time_cost (integer) - Максимальное время, используемое при вычислении хеша Argon2. Значение по умолчанию:
PASSWORD_ARGON2_DEFAULT_TIME_COST。 -
threads (integer) - Максимальное количество потоков, используемых при вычислении хеша Argon2. Значение по умолчанию:
PASSWORD_ARGON2_DEFAULT_THREADS。
Описание параметра:
password: Хеш-значение, созданное password_hash().
algo: Константа алгоритма пароля, используемая для указания алгоритма при хешировании пароля.
options: Ассоциативный массив, содержащий параметры. В настоящее время поддерживаются два параметра: salt — соль (строка помех), добавляемая при хешировании пароля, и cost — используется для указания количества рекурсивных слоёв алгоритма. Примеры этих двух значений можно найти на странице crypt().
Если опущено, будут использоваться случайная соль и стоимость по умолчанию.
Возвращаемое значение
Возвращает хешированный пароль или FALSE в случае неудачи.
Примеры
Пример 1
Вывод:
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Пример 2
Вывод:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Пример 3
Пример ручной установки значения salt
Вывод:
$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.
Пример 4
Пример использования password_hash() для поиска оптимального значения cost
Вывод:
Appropriate Cost Found: 10
Пример 5
Пример использования Argon2:
Вывод:
Argon2 hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0Другие расширения