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.

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

  • crypt() - Необратимое хеширование строки
  • password_hash() - Создает хеш пароля
  • hash() - Генерирует хеш-код (дайджест сообщения)
  • hash_algos() - Возвращает список зарегистрированных алгоритмов хеширования
  • hash_init() - Инициализация инкрементального контекста хеширования
  • hash_hmac() - Генерация хеш-кода на основе ключа, используя метод HMAC
  • hash_hmac_file() - Генерация хеш-кода на основе ключа, используя метод HMAC и содержимое полученного файла
  • openssl_pbkdf2() - Генерирует строки PKCS5 v2 PBKDF2