Bulgaria PHP Conference 2019

sodium_crypto_pwhash_str

(PHP 7 >= 7.2.0)

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

Описание

sodium_crypto_pwhash_str ( 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. Имеет смысл использовать одинаковые уровни защищенности в memlimit и opslimit.

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

Возвращает хеш пароля, или FALSE в случае возникновения ошибки.

Для того, чтобы для одного и того же пароля всегда генерировался один и тот же хеш, необходимо использовать одинаковые значения 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

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

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top