hash_pbkdf2
(PHP 5 >= 5.5.0, PHP 7)
hash_pbkdf2 — Формирования ключа PBKDF2 для заданных входных данных
Описание
$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, $iterations, 20);
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