繁体   English   中英

您如何针对bcrypt散列验证用户提交的密码?

[英]How do you verify user submitted passwords against a bcrypt hash?

以下如何在PHP中使用bcrypt哈希密码?

使用以下方式向MySQL提交密码:

  $options = array('cost' => 11);
  $password = password_hash("$_POST[password]", PASSWORD_BCRYPT, $options);

MySQL中的密码显示为:

mysql> SELECT password FROM users;
+-----------------------------------------------+
| password                                      |
+-----------------------------------------------+
| $2y$11$O77omA4vaNKu0DScTXCBd.FSXKSV0PD0piEokV |
+-----------------------------------------------+

在登录端:

$hash = $row['password'];
$password = $_POST[password];

if (password_verify($password, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}

登录无效,并且始终显示:

无效的密码。

由于文件很大,因此我粘贴了相关部分。 如果需要更多(可能不相关),我可以粘贴。

我想这是因为列长度...使用此设置,生成的密码将包含60个字符,返回的密码将包含更少的字符,您能显示表结构吗?

PHP文档说

...因此,建议将结果存储在一个数据库列中,该列可以扩展到超过60个字符(255个字符将是一个不错的选择)...

参见: http : //www.php.net/manual/pt_BR/function.password-hash.php

if(crypt($user_password, $databse_password)==$databse_password)
   { validate login}
else 
   {reject login}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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