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,$memlimitsodium_crypto_pwhash() の scrypt 対応版です。
この特別な関数を使う理由は、 パスワードとソルトから、暗号化キーのシードを導出し、 そのシードを特定の目的に必要とされる実際のキー (たとえば sodium_crypto_sign_detached() で使う) を生成することです。
length生成するパスワードハッシュの長さ。 バイト単位で指定します。
passwordハッシュを生成するパスワード
salt
      ハッシュ化する前に、
      パスワードに追加するソルト値。
      この値は予測されてはいけません。
      random_bytes()
      のような良質な乱数のソースから生成されることが理想です。
      そして、少なくとも長さが
      SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES
      バイトである必要があります。
     
opslimit
      実際に行う計算処理の最大量。
      この値を大きくすると、
      キーを計算するのに必要なCPUサイクルが増加します。
      意図した使い方次第で、
      適切な値の上限値を設定するために、いくつかの定数が存在します。
      弱いものから強いものへと並べると、以下のとおりです:
      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 
      と一致するものとペアになるべきです。
     
指定された長さのバイト列を文字列として返します。
