sodium_crypto_pwhash_str
(PHP 7 >= 7.2.0)
sodium_crypto_pwhash_str — Получить ASCII-кодированный хеш
Описание
$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
. Имеет смысл использовать одинаковые уровни защищенности в memlimit и opslimit.
Возвращаемые значения
Возвращает хеш пароля.
Для того, чтобы для одного и того же пароля всегда генерировался один и тот же хеш,
необходимо использовать одинаковые значения opslimit
и
memlimit
. Так как эти параметры включены в сгенерированный
хеш, функция sodium_crypto_pwhash_str_verify() может проверять его
корректность без необходимости хранить эти параметры отдельно.
Примечания
Замечание:
Хеши вычисляются с помощью алгоритма Argon2ID, устойчивого для атак стороннего канала и GPU. В отличие от функции password_hash(), у этой функции нет параметра salt (он генерируется автоматически), а параметры
opslimit
иmemlimit
являются обязательными.
Примеры
Пример #1 Пример использования password_hash()
<?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
Смотрите также
- sodium_crypto_pwhash_str_verify() - Проверяет, что пароль соответствует хешу
- sodium_crypto_pwhash() - Получить ключ с пароля
- password_hash() - Создает хеш пароля
- password_verify() - Проверяет, соответствует ли пароль хешу
- » Документация на Libsodium Argon2