Function is expecting salt length to be EXACTLY SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES bytes. It throws error if you provide longer salt string. For example: salt of 64 bytes will throw an error.
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwhash_scryptsalsa208sha256 — Получает ключ из пароля функцией scrypt
$length
,$password
,$salt
,$opslimit
,$memlimit
Функция работает аналогично функции scrypt sodium_crypto_pwhash().
Распространённая причина, по которой вызывают эту функцию — получить начальные числа для криптографических ключей из пароля и соли, а затем использовать эти начальные числа для генерации фактических ключей, необходимых для отдельных целей (например, подписи сообщения, как это делает функция sodium_crypto_sign_detached()).
length
Длина генерируемого хеша пароля в байтах.
password
Пароль, для которого создаётся хеш.
salt
Соль, которую нужно добавить к паролю перед хешированием.
Соль должна быть непредсказуемой, в идеале сгенерированной из хорошего
источника случайных чисел наподобие функции random_bytes(),
и иметь длину в байтах не меньше, чем значение константы SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES
.
opslimit
Представляет максимальное количество вычислений для выполнения.
Увеличение этого числа приведёт к тому, что функции потребуется больше
циклов ЦП для вычисления ключа.
Доступны некоторые константы для установки предела операций на соответствующие
значения в зависимости от предполагаемого использования, в порядке размера:
SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE
и SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE
.
memlimit
Максимальный объем ОЗУ в байтах, который будет использовать функция.
Выбрать требуемое значение в порядке размера помогают существующие константы:
SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE
и SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE
.
Обычно они должны сочетаться с значениями параметра opslimit
, которые соответствуют
константам.
Функция возвращает строку байтов требуемой длины.