如何在数据库中将密码作为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”?这些问题的答案,以及今晚的“为什么我不应该构建自己的身份验证层”!接下来是另一集“救命啊,我被黑了!”好吧,谢谢你提供的信息。我想在问问题之前,我需要做一些更多的研究。啊哈。好的,谢谢你提供的信息。我想在问问题之前,我需要对一些事情做更多的研究。