(PHP 5 >= 5.5.0, PHP 7, PHP 8)
hash_pbkdf2 — Генерирует PBKDF2-ключ на основе исходного пароля
algo
Название алгоритма хеширования (например, "sha256").
Список алгоритмов, которые поддерживает функция, приводит описание функции hash_hmac_algos().
Замечание:
Некриптографические хеш-функции не допускаются.
passwordПароль для деривации.
saltСоль для формирования ключа. Требуется сгенерировать случайное значение.
iterationsКоличество внутренних итераций для преобразования исходного пароля в хеш-ключ.
length
Длина строки вывода. Если параметр
binary задали как true, значение этого параметра
соответствует длине ключа в байтах, если для параметра
binary установили значение false —
соответствует удвоенной длине ключа в байтах, поскольку каждый
байт ключа возвращается в виде двух шестнадцатеричных символов.
Со значением 0 функция вернёт весь вывод
заданного алгоритма.
binary
Функция выводит необработанные двоичные данные, если значение параметра равно true.
Если false — выводятся шестнадцатеричные строчные буквы в нижнем регистре.
options
Массив опций для алгоритмов хеширования.
Пока вариантами функций хеширования MurmurHash поддерживается только параметр "seed".
Функция возвращает строку, которая содержит сформированный ключ в виде
строки шестнадцатеричных чисел в нижнем регистре, если только для параметра
binary не установили значение true,
тогда возвращаются необработанные двоичные данные.
Функция выбрасывает исключение ValueError,
если алгоритм неизвестен, параметр
iterations меньше или равен
0, параметр length
меньше 0 или параметр salt
чрезмерно длинный (больше значения выражения INT_MAX - 4).
| Версия | Описание |
|---|---|
| 8.0.0 |
Теперь выбрасывается исключение ValueError, если возникла ошибка;
раньше функция возвращала false и выдавала ошибку уровня E_WARNING.
|
| 7.2.0 | Запретили некриптографические хеш-функции (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat). |
Пример #1 Пример базового использования функции hash_pbkdf2()
<?php
$password = "password";
$iterations = 600000;
// Создаём криптографически безопасную случайную соль функцией random_bytes()
$salt = random_bytes(16);
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
var_dump($hash);
// Для необработанного двоичного файла параметр $length требуется уменьшить вдвое, чтобы получить аналогичные результаты
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
var_dump(bin2hex($hash));
?>Вывод приведённого примера будет похож на:
string(20) "120fb6cffcf8b32c43e7" string(20) "120fb6cffcf8b32c43e7"
Метод PBKDF2 может использовать для хеширования паролей в
целях хранения. Однако следует отметить, что функция password_hash()
или функция crypt() с типом хеша CRYPT_BLOWFISH
лучше для хранения паролей.