如何使用 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