(PHP 5 >= 5.5.0, PHP 7, PHP 8)
hash_pbkdf2 — Формирования ключа PBKDF2 для заданных входных данных
$algo
,$password
,$salt
,$iterations
,$length
= 0,$binary
= false
algo
Имя выбранного хеширующего алгоритма (например,
md5
, sha256
,
haval160,4
и т.д.)
Список поддерживаемых алгоритмов можно посмотреть в описании функции
hash_algos().
password
Пароль, используемый для формирования.
salt
Соль, используемая при формировании ключа. Значение необходимо генерировать случайным образом.
iterations
Количество итераций для формирования ключа.
length
Длина генерируемой строки. Если параметр
binary
задан как true
, то этот
параметр равен количеству байт в генерируемом ключе. Если
binary
установлен как false
,
то длина ключа в байтах будет в два раза меньше, так как каждый
байт ключа будет возвращён в виде двух символов
шестнадцатеричной системы (0-F).
Если задано как 0
, то используется весь вывод
заданного алгоритма.
binary
Если установлено true
, то вывод будет представлять из себя
необработанные бинарные данные, а если false
, то вывод будет
представлен в виде строки шестнадцатеричных цифр в нижнем регистре.
Возвращаемая строка содержит сформированный ключ в виде
строки шестнадцатеричных чисел в нижнем регистре. Но если
параметр 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
.