📜  如何使用 bcrypt 在PHP散列密码?

📅  最后修改于: 2022-05-13 01:54:10.663000             🧑  作者: Mango

如何使用 bcrypt 在PHP散列密码?

每个人都知道并理解,将密码以明文形式存储在数据库中是一件非常粗鲁的事情,而且不安全。然而,有几个这样做是因为它使互联网站点很容易进行密码恢复或测试。
bcrypt 是一种用于构建密码安全性的密码散列技术。它用于保护密码免受黑客攻击,因为密码以 bcrypted 格式存储。

PHP的 password_hash()函数是一个内置函数,用于创建新的密码哈希。它使用强大而健壮的哈希算法。 password_hash()函数与 crypt()函数非常兼容。因此,由 crypt() 创建的密码哈希可以与 password_hash() 一起使用,反之亦然。函数 password_verify() 和 password_hash() 只是函数crypt() 的包装器,它们使准确使用它变得更加容易。

句法:

string password_hash( $password, $algo, $options )

password_hash()函数目前支持以下算法:

  • PASSWORD_DEFAULT
  • PASSWORD_BCRYPT
  • 密码_ARGON2I
  • PASSWORD_ARGON2ID

参数:该函数接受上面提到和下面描述的三个参数:



  • 密码:它存储用户的密码。
  • algo:它是密码算法常量,它是连续使用的,同时表示在进行密码散列时要使用的算法。
  • options:它是一个关联数组,其中包含选项。如果将其删除且不包括在内,将使用随机盐,并且将使用默认成本。

返回值:成功时返回散列密码,失败时返回 False。

例子:

Input : echo password_hash("GFG@123", PASSWORD_DEFAULT);
Output : $2y$10$.vGA19Jh8YrwSJFDodbfoHJIOFH)DfhuofGv3Fykk1a

下面的程序说明了PHP的 passwor_hash()函数:

方案一:


输出:
$2y$10$Z166W1fBdsLcXPVQVfPw/uRq1ueWMA6sLt9bmdUFz9AmOGLdM393G

方案二:

 12,
];
  
echo password_hash("GFG@123", PASSWORD_BCRYPT, $options);
?>
输出:
$2y$12$jgzGJmLsUHGNjmDK98MbWe82e3CIJZuflAj6lE1I.dlyhSVfz42oq

方案三:

 $cost]);
    $end = microtime(true);
} while (($end - $start) < $timeTarget);
  
echo "The appropriate cost is: " . $cost;
?>
输出:
The appropriate cost is: 10

程序4:


输出:
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YUNvTkJBT2dEejQuUVQvRQ$+96jm/eISqZ7+P9n0DrsBf25piwfnLRy2Yy1VYmb9iI

参考: https://www. PHP.net/manual/en/ 函数.password-hash。 PHP