如何在数据库中将密码作为BCRYPT存储为'$2a$15';在PHP中
我想知道如何将密码存储为以如何在数据库中将密码作为BCRYPT存储为'$2a$15';在PHP中,php,mysql,bcrypt,Php,Mysql,Bcrypt,我想知道如何将密码存储为以$2a$15开头的BCRYPT,因为我已经设置了注册表,它已经将密码存储在BCRYPT中 但是,当它将密码存储为BCRYPT时,输出是$2y$15,但我希望它是$2a$15。我是新来的BCRYPT,我觉得很难理解 无论如何,这是我的BCRYPT代码: function encryptedPassword($strPassword) { $strSHA256 = hash('sha256', $strPassword); $strBcrypt = pass
$2a$15
开头的BCRYPT
,因为我已经设置了注册表,它已经将密码存储在BCRYPT
中
但是,当它将密码存储为BCRYPT
时,输出是$2y$15
,但我希望它是$2a$15
。我是新来的BCRYPT
,我觉得很难理解
无论如何,这是我的BCRYPT
代码:
function encryptedPassword($strPassword) {
$strSHA256 = hash('sha256', $strPassword);
$strBcrypt = password_hash($strSHA256, PASSWORD_BCRYPT, array('cost' => 15, 'salt' => bin2hex(openssl_random_pseudo_bytes(12))));
return $strBcrypt;
}
所以,如果我的密码是Hello123代码>。其结果将是:
$2y$15$aa979703a103b0a45b2afO0KS15RjWu5Lc8sa4.xQlsw9QLtyhp/O
我希望它是:
$2a$15$aa979703a103b0a45b2afO0KS15RjWu5Lc8sa4.xQlsw9QLtyhp/O
我不知道这是否和盐有关,有人能帮我吗?来自PHP手册:
密码\u BCRYPT-使用CRYPT\u BLOWFISH算法创建散列。
这将使用“$2y$”生成与crypt()兼容的标准哈希
标识符。结果将始终是一个60个字符的字符串,或FALSE
一旦失败
因此,使用BCRYPT将始终产生$2y$。顺便说一句,散列的起始部分只是一个标识符,用于随后使用password\u verify测试密码。就像您案例中的15美元是哈希算法的成本一样
我建议您阅读更多关于PHP密码哈希的内容。绝对没有理智的理由让散列以X或Y开头
PHP的人在为您提供安全的密码哈希函数方面付出了巨大的努力。你真的应该试着使用它们,而不必对周围的东西进行黑客攻击。散列一次并不比散列一次更安全。PHP7中不推荐使用salt选项,我建议您放弃它,PHP可以比您更好地处理它。来自PHP手册:
密码\u BCRYPT-使用CRYPT\u BLOWFISH算法创建散列。
这将使用“$2y$”生成与crypt()兼容的标准哈希
标识符。结果将始终是一个60个字符的字符串,或FALSE
一旦失败
因此,使用BCRYPT将始终产生$2y$。顺便说一句,散列的起始部分只是一个标识符,用于随后使用password\u verify测试密码。就像您案例中的15美元是哈希算法的成本一样
我建议您阅读更多关于PHP密码哈希的内容。绝对没有理智的理由让散列以X或Y开头
PHP的人在为您提供安全的密码哈希函数方面付出了巨大的努力。你真的应该试着使用它们,而不必对周围的东西进行黑客攻击。散列一次并不比散列一次更安全。PHP7中不推荐使用salt选项,我建议您放弃它,PHP可以比您更好地处理它。1。为什么您特别希望它是
$2a$
?2.为什么在bcrypt之前用SHA256散列密码?!3.你为什么要自己生产盐?!4.为什么不使用password\u hash()
及其配套的password\u verify()
?5。为什么在对密码进行哈希运算时该函数被称为“encryptedPassword”?这些问题的答案,以及今晚的“为什么我不应该构建自己的身份验证层”!接着是另一集“救命啊,我被黑了!”1。为什么您特别希望它是$2a$
?2.为什么在bcrypt之前用SHA256散列密码?!3.你为什么要自己生产盐?!4.为什么不使用password\u hash()
及其配套的password\u verify()
?5。为什么在对密码进行哈希运算时该函数被称为“encryptedPassword”?这些问题的答案,以及今晚的“为什么我不应该构建自己的身份验证层”!接下来是另一集“救命啊,我被黑了!”好吧,谢谢你提供的信息。我想在问问题之前,我需要做一些更多的研究。啊哈。好的,谢谢你提供的信息。我想在问问题之前,我需要对一些事情做更多的研究。