PHP - password_hash 函数



PHP 哈希password_hash() 函数用于使用给定的默认密码和强大的“单向”哈希算法创建密码哈希。 密码哈希是一种安全存储密码的方式,方法是将其转换为固定长度的字符字符串,通常不可逆。

此函数与crypt() 函数兼容,因此,由 crypt() 函数创建的密码哈希可以与password_hash() 函数一起使用。

它接受三个参数。 如果省略“选项”参数,则将创建随机盐,并将使用默认成本。

语法

以下是 PHP 哈希password_hash() 函数的语法:

password_hash(string $password, string $algo, array $options = []): string

参数

以下是此函数的参数:

  • password - 给定的用户密码。
  • algo - 一个密码算法常量,表示哈希密码时使用的算法。
  • options - 包含选项的关联数组。

返回值

此函数返回哈希密码。

示例 1

以下是 PHP 哈希password_hash() 函数的基本示例:

<?php	
   $passw = "53nh46u74m3nt3";
   echo "Given password: $passw";
   $opts = [ "cost" => 15 ];
   echo "\nGenerating password hash.....";
   $hashp = password_hash($passw, PASSWORD_BCRYPT, $opts);
   echo "\nGenerated password hash: $hashp";
   echo "\nPassword length: ".strlen($hashp);
?>

输出

执行上述程序后,将显示以下输出:

Given password: 53nh46u74m3nt3
Generating password hash.....
Generated password hash: $2y$15$4lM81sKwdN9vCLUKQ2h2yup.vZVcFwaa2.lCOG.Fg1.bo1X/MZvJy
Password length: 60

示例 2

以下是 PHP 哈希password_hash() 函数的另一个示例。 我们使用此函数从给定的密码“53nh46u74m3nt3”创建密码哈希。 如果我们传递自定义盐参数,它将抛出错误,因为它不再受支持:

<?php	
   $passw = "53nh46u74m3nt3";
   echo "Given password: $passw";
   $opts = [ "cost" => 15, "salt" => "salteadoususuueyryy28yyGGtttwqtwtt" ];
   echo "\nGenerating password hash.....";
   $hashp = password_hash($passw, PASSWORD_BCRYPT, $opts);
   echo "\nGenerated password hash: $hashp";
   echo "\nPassword length: ".strlen($hashp);
?>

输出

上述程序产生以下输出:

Given password: 53nh46u74m3nt3
Generating password hash.....
Generated password hash: $2y$15$woSgOZK/0Y3Qj/7iAxD0Bee2O3ohaaufBcq46gwlVRw0dNoR01vpi
Password length: 60
PHP Warning:  password_hash(): The "salt" option has been ignored, 
since providing a custom salt is no longer supported in /home/cg/root/55817/main.php on line 6
php_function_reference.htm
广告