查詢

sodium_crypto_pwhash_str()函式—用法及示例

「 將密碼雜湊為字串格式,以便儲存和驗證使用者密碼 」


函式名稱:sodium_crypto_pwhash_str()

適用版本:PHP 7.2.0以上

函式描述:該函式用於將密碼雜湊為字串格式,以便儲存和驗證使用者密碼。它基於Argon2密碼雜湊演算法,並使用隨機生成的salt和適當的引數來增加密碼的安全性。

語法:string sodium_crypto_pwhash_str(string $password, int $opslimit, int $memlimit)

引數:

  • $password: 要雜湊的密碼字串。
  • $opslimit: 迭代次數,用於控制密碼雜湊的計算複雜度。較高的值將增加計算時間並提高密碼的安全性。推薦值為至少 4。
  • $memlimit: 記憶體限制,用於控制密碼雜湊的記憶體使用。較高的值將增加記憶體開銷並提高密碼的安全性。推薦值為至少 64 * 1024。

返回值:返回雜湊後的密碼字串,或者在失敗時返回 false。

示例:

$password = "myPassword123";

// 生成隨機的salt
$salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);

// 定義迭代次數和記憶體限制
$opslimit = 4;
$memlimit = 64 * 1024;

// 生成雜湊後的密碼字串
$hashedPassword = sodium_crypto_pwhash_str($password, $opslimit, $memlimit);

// 儲存雜湊後的密碼字串到資料庫或其他持久化儲存中

// 驗證密碼
if (sodium_crypto_pwhash_str_verify($hashedPassword, $password)) {
    echo "密碼驗證透過";
} else {
    echo "密碼驗證失敗";
}

注意事項:

  1. 在每次生成雜湊密碼時,應使用不同的salt,以增加密碼的安全性。可以使用隨機位元組生成函式(如 random_bytes())來生成salt。
  2. 迭代次數和記憶體限制的值應根據具體情況進行調整,以平衡安全性和效能需求。
  3. 在驗證密碼時,可以使用 sodium_crypto_pwhash_str_verify() 函式。它接受雜湊後的密碼字串和原始密碼作為引數,如果驗證透過則返回 true,否則返回 false。
補充糾錯
熱門PHP函式
分享連結