[英]How to store a password as BCRYPT in a database as '$2a$15' in PHP
我想知道如何将密码存储为以$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手册:
PASSWORD_BCRYPT-使用CRYPT_BLOWFISH算法创建哈希。 这将使用“ $ 2y $”标识符生成标准的crypt()兼容哈希。 结果将始终为60个字符串,否则为FALSE。
因此,使用BCRYPT将始终产生$ 2y $。 顺便说一句,哈希的开头部分只是一个标识符,用于随后使用password_verify测试密码。 就像您的情况中的$ 15 $是哈希算法的成本...
我建议您阅读有关PHP密码哈希的更多信息。 绝对没有理智的理由为什么您希望哈希绝对以X或Y开头...
PHP的人们一直在努力为您提供安全的密码哈希函数。 您应该真正尝试使用它们,而不用乱砍东西。 哈希哈希比哈希一次更安全。 salt选项在PHP7中已被弃用,建议您摆脱它,PHP比您可以更好地处理它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.