sodium_crypto_pwhash_str

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_strПолучает ASCII-кодированный хеш

Описание

sodium_crypto_pwhash_str(#[\SensitiveParameter] string $password, int $opslimit, int $memlimit): string

Функция использует ресурсоёмкий по ЦПУ и памяти алгоритм хешированияа, а также случайно сгенерированную соль и ограничения по памяти и процессору для генерации хэша в кодировке ASCII, который подходит для хранения паролей.

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

password

Строка (string); пароль, для которого функция сгенерирует хеш.

opslimit

Задаёт ограничение на потребление процессорного времени. Увеличение этого числа приведет к тому, что функции потребуется больше циклов ЦП для вычисления ключа. Предел операций на соответствующие значения в зависимости от предполагаемого использования устанавливают константами в порядке силы: SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE и SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE.

memlimit

Максимальный объем оперативной памяти в байтах, которую будет использовать функция. В выборе подходящего значения помогают константы в порядке размера: SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE и SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE. Обычно константы должны сочетаться со значениями opslimit, которые им соответствуют.

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

Функция возвращает хеш пароля.

Чтобы для одного и того же пароля каждый раз генерировался один и тот же хеш, устанавливают одинаковые значения параметров opslimit и memlimit. Поскольку эти параметры функция включает в сгенерированный хеш, функция sodium_crypto_pwhash_str_verify() может проверять его корректность без необходимости хранить эти параметры отдельно.

Примеры

Пример #1 Пример использования функции sodium_crypto_pwhash_str()

<?php

$password
= 'password';

echo
sodium_crypto_pwhash_str(
$password,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);

?>

Вывод приведённого примера будет похож на:

$argon2id$v=19$m=65536,t=2,p=1$oWIfdaXwWwhVmovOBc2NAQ$EbsZ+JnZyyavkafS0hoc4HdaOB0ILWZESAZ7kVGa+Iw

Примечания

Замечание:

Хеши вычисляются алгоритмом Argon2ID, который устойчив к атакам стороннего канала и GPU. В отличие от функции password_hash(), у этой функции нет параметра salt (он генерируется автоматически), а параметры opslimit и memlimit — обязательные.

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