0

我在我的用户登录过程中使用 php pdo 和 mysql ate 数据库。我已经尝试使用 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;
4

1 回答 1

0

首先,不要。使用现有的密码库。密码的安全处理很难正确执行,而且您几乎肯定会弄错。

第二:您不能以这种方式比较密码($userInfo->getPassword() == $password)。假设您已经存储了散列密码(从您发布的微薄代码中实际上并不明显),那么您需要 hash $password,并将散列值与存储的散列进行比较。这就是密码散列的重点:散列从相同的输入产生相同的输出,因此在创建帐户时,您存储对密码进行散列的不可逆输出,然后在登录时散列新提交的密码并将结果与​​存储的结果进行比较哈希。

于 2013-05-24T16:31:32.510 回答