hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7)

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

Описание

hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations , int $length = 0 , bool $binary = false ) : string

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

algo

Имя выбранного хеширующего алгоритма (например, md5, sha256, haval160,4 и т.д.) Список поддерживаемых алгоритмов можно посмотреть в описании функции hash_algos().

password

Пароль, используемый для формирования.

salt

Соль, используемая при формировании ключа. Значение необходимо генерировать случайным образом.

iterations

Количество итераций для формирования ключа.

length

Длина генерируемой строки. Если параметр binary задан как true, то этот параметр равен количеству байт в генерируемом ключе. Если binary установлен как false, то длина ключа в байтах будет в два раза меньше, так как каждый байт ключа будет возвращен в виде двух символов шестнадцетиричной системы (0-F).

Если задано как 0, то используется весь вывод заданного алгоритма.

binary

Если установлено true, то вывод будет представлять из себя необработанные бинарные данные, а если false, то вывод будет представлен в виде строки шестнадцетиричных цифр в нижнем регистре.

Возвращаемые значения

Возвращаемая строка содержит сформированный ключ в виде строки шестнадцетиричных чисел в нижнем регистре. Но если параметр binary установлен как 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