通常你会在php中编写一个sql语句来查询mysql数据库。
$sql="select * from table where userid='username' and password='$pass'";
我的问题是,如果我使用password_hash($ pass,PASSWORD_BCRYPT)来加密我的密码,我如何编写上述查询以从我的数据库中检索一些行,因为存储在数据库中的散列密码将不会用户输入的文本密码是否相同? 请咨询。感谢。
答案 0 :(得分:0)
用于将密码存储到数据库中
<?php
/**
* Note that the salt here is randomly generated.
* Never use a static salt or one that is not randomly generated.
*
* For the VAST majority of use-cases, let password_hash generate the salt randomly for you
*/
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>
如果您想使用password_verify()函数验证密码。
首先,从数据库中获取存储的散列密码,然后使用password_verify()
函数
<?php
// See the password_hash() example to see where this came from.
$hash = '$2y$11$lBi3B5rakkB6CBJRLn2e6O1RppUr2y5r0W/4Z0jJBGqE9cdYK.1sa';
if (password_verify('rasmuslerdorf', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>