简体中文
查询

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