English | 简体中文 | 繁體中文
查询

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函数
分享链接