sodium_crypto_pwhash_scryptsalsa208sha256
scrypt を使い、パスワードからキーを導出する
説明
string sodium_crypto_pwhash_scryptsalsa208sha256(
int $length
,
#[\SensitiveParameter]string $password
,
string $salt
,
int $opslimit
,
int $memlimit
)
この特別な関数を使う理由は、
パスワードとソルトから、暗号化キーのシードを導出し、
そのシードを特定の目的に必要とされる実際のキー
(たとえば
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
と一致するものとペアになるべきです。
戻り値
指定された長さのバイト列を文字列として返します。