Hash
PHP Manual

hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7)

hash_pbkdf2Формирования ключа PBKDF2 для заданных входных данных

Описание

string hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = false ]] )

Список параметров

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$iterations20);
echo 
$hash;
?>

Результатом выполнения данного примера будет что-то подобное:

120fb6cffcf8b32c43e7

Примечания

Предостережение

Метод PBKDF2 может быть использован для хеширования паролей в целях их хранения. Однако стоит помнить, что для этих целей гораздо лучше использовать password_hash() или crypt() с CRYPT_BLOWFISH.

Смотрите также


Hash
PHP Manual