函式名稱:sodium_crypto_pwhash()
適用版本:PHP 7.2.0及以上版本
函式描述:sodium_crypto_pwhash()函式用於生成密碼雜湊,並且可以透過配置引數來增加雜湊的安全性。
用法:
string sodium_crypto_pwhash(
int $length,
string $password,
string $salt,
int $opslimit,
int $memlimit
)
引數:
$length
:生成的雜湊值的長度,以位元組為單位。$password
:要進行雜湊的原始密碼。$salt
:用於增加密碼雜湊安全性的鹽值,必須是16位元組長的字串。$opslimit
:操作限制引數,用於控制雜湊計算的時間和資源開銷。較高的值會增加計算時間,提高雜湊的安全性。$memlimit
:記憶體限制引數,用於控制雜湊計算時使用的記憶體量。較高的值會增加記憶體使用量,提高雜湊的安全性。
返回值:
- 成功生成密碼雜湊時,返回生成的雜湊值,型別為字串。
- 失敗時,返回false。
示例:
$password = "myPassword123";
$salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);
$opslimit = SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE;
$memlimit = SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE;
$hash = sodium_crypto_pwhash(
SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_BYTES,
$password,
$salt,
$opslimit,
$memlimit
);
if ($hash !== false) {
echo "Password hash generated successfully: " . bin2hex($hash);
} else {
echo "Failed to generate password hash.";
}
在上面的示例中,我們首先生成一個隨機的鹽值,然後使用sodium_crypto_pwhash()
函式生成密碼的雜湊值。最後,我們檢查返回值,如果生成成功,則將雜湊值以十六進位制字串的形式輸出,否則輸出失敗資訊。請注意,示例中的SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE
和SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
是操作限制和記憶體限制的推薦預設值,可以根據具體需求進行調整。