函式期望鹽值的長度正好是 SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES 位元組。如果您提供更長的鹽值字串,它會拋出錯誤。例如:64 位元組的鹽值會拋出錯誤。
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwhash_scryptsalsa208sha256 — 使用 scrypt 從密碼衍生金鑰
$length
,$password
,$salt
,$opslimit
,$memlimit
這是 sodium_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
函式將使用的最大 RAM 量,以位元組為單位。有一些常數可以幫助您選擇適當的值,按大小順序排列:SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE
和 SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE
。通常,這些應該與匹配的 opslimit
值配對。
一個所需長度的位元組字串。