我正在使用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;
答案 0 :(得分:0)
首先,不。使用现有密码库。安全处理密码很难正确处理,你几乎肯定会弄错。
第二:您不能以这种方式比较密码($userInfo->getPassword() == $password
)。假设您已经存储了散列密码(从您发布的微薄代码中确实不明显),那么您需要散列$password
,并将散列值与存储的散列进行比较。这就是密码哈希的重点:哈希从同一输入产生相同的输出,因此在创建帐户时,您存储哈希密码的不可逆输出,然后在登录时哈希新提交的密码并将结果与存储的结果进行比较散列。