繁体   English   中英

如何在PHP中将密码以BCRYPT的形式存储为数据库中的$ 2a $ 15

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM