关于如何在php用户登录过程中使用bCrypt的困惑


confusion about how to use bCrypt at php user login process

我使用php pdo在我的用户登录过程中mysql数据库。我已经尝试过bCrypt库的密码加密。但是我不清楚输入的密码和加密的密码如何核对?

这是我尝试的代码:

$bcrypt = new Bcrypt(15);
$hash = $bcrypt->hash($password);
$isGood = $bcrypt->verify($password, $hash);
$login = new UserManager();
$getuserInfo = $login -> checkLogin($username, $password);
foreach ($getuserInfo as $userInfo) :
  if ($userInfo -> getUID() == $username) {
    if($userInfo -> getPassword() == $password) ?
  }
endforeach;

首先,不要。使用现有的密码库。密码的安全处理很难做好,你几乎肯定会出错。

第二:你不能这样比较密码($userInfo->getPassword() == $password)。假设您已经存储了散列密码(从您发布的少量代码中确实看不出来),那么您需要对$password进行散列,并将散列值与存储的散列值进行比较。这就是密码哈希的全部意义:哈希从相同的输入产生相同的输出,因此在创建帐户时存储哈希密码的不可逆输出,然后在登录时对新提交的密码进行哈希,并将结果与存储的哈希进行比较。