(PHP 5 >= 5.5.0, PHP 7)
hash_pbkdf2 — Формирования ключа PBKDF2 для заданных входных данных
$algo
, string $password
, string $salt
, int $iterations
[, int $length
= 0
[, bool $raw_output
= FALSE
]] ) : string
algo
Имя выбранного хеширующего алгоритма (например, md5, sha256, haval160,4 и т.д.) Список поддерживаемых алгоритмов можно посмотреть в описании функции hash_algos().
password
Пароль, используемый для формирования.
salt
Соль, используемая при формировании ключа. Значение необходимо генерировать случайным образом.
iterations
Количество итераций для формирования ключа.
length
Длина генерируемой строки. Если параметр
raw_output
задан как TRUE
, то этот
параметр равен количеству байт в генерируемом ключе. Если
raw_output
установлен как FALSE
,
то длина ключа в байтах будет в два раза меньше, так как каждый
байт ключа будет возвращен в виде двух символов
шестнадцетиричной системы (0-F).
Если задано как 0, то используется весь вывод заданного алгоритма.
raw_output
Если установлено TRUE
, то вывод будет представлять из себя
необработанные бинарные данные, а если FALSE
, то вывод будет
представлен в виде строки шестнадцетиричных цифр в нижнем регистре.
Возвращаемая строка содержит сформированный ключ в виде
строки шестнадцетиричных чисел в нижнем регистре. Но если
параметр raw_output
установлен как TRUE
,
то будут возвращены сырые бинарные данные.
Ошибка уровня E_WARNING
будет вызвана если
заданный алгоритм некорректен, параметр
iterations
меньше или равен
0, параметр length
меньше чем 0 или если salt
очень длинный
(больше чем INT_MAX
- 4).
Версия | Описание |
---|---|
7.2.0 | Запрещено использование некриптографических функций (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat). |
Пример #1 Пример простого использования hash_pbkdf2()
<?php
$password = "password";
$iterations = 1000;
// Создаем случайный инициализирующий вектор
// с помощью openssl_random_pseudo_bytes() или другого источника случайных данных
$salt = openssl_random_pseudo_bytes(16);
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
echo $hash;
?>
Результатом выполнения данного примера будет что-то подобное:
120fb6cffcf8b32c43e7
Метод PBKDF2 может быть использован для хеширования паролей в
целях их хранения. Однако стоит помнить, что для этих целей гораздо
лучше использовать password_hash() или
crypt() с CRYPT_BLOWFISH
.