查詢

sodium_crypto_pwhash()函式—用法及示例

「 生成密碼雜湊,並且可以透過配置引數來增加雜湊的安全性 」


函式名稱: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_INTERACTIVESODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE是操作限制和記憶體限制的推薦預設值,可以根據具體需求進行調整。

補充糾錯
熱門PHP函式
分享連結