【问题标题】:PHP: Using bcrypt for password encryptionPHP:使用 bcrypt 进行密码加密
【发布时间】:2012-10-17 11:06:30
【问题描述】:

我还是 PHP 新手。我尝试了 Andrew Moore 先生的方法。密码不匹配。我试着玩Andrew Liu's code 以及帖子中的答案。当我尝试 var_dump 时,我没有得到真或假。 我不确定我做错了什么。有人可以告诉我吗?

$bcrypt = new Bcrypt(15); 
$username = sanitize($username);
$password = $_POST['password'];

DEFINE('DB_USER', 'root');
DEFINE('DB_PASSWORD', 'password');
DEFINE('DB_HOST', 'localhost');
DEFINE('DB_NAME', 'users');

$dbh = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$check_username = $dbh->prepare("SELECT password FROM user WHERE username= '$username'");
$check_username -> execute(array($username));

while($row = $check_username->fetch(PDO::FETCH_ASSOC)){
    $check_password = $row['password'];
    $isGood = $bcrypt->verify($password, $check_password);
    var_dump($isGood);
}

【问题讨论】:

  • 那么你从var_dump得到什么
  • 我稍后修改了代码。我现在对 var_dump 感到错误。我以明文形式输入密码,并且从数据库中检索到“check_password”的散列版本。我似乎无法得到 $isGood = $bcrypt->verify($password, $check_password);在职的。我正在使用 XAMPP 和 PHP 版本 5.3.8。
  • 你确定你得到了正确的记录吗? var_dump($row)

标签: php password-encryption


【解决方案1】:

你能将哈希密码与存储在数据库中的密码进行比较吗? 我有类似的问题,然后我意识到 db 中的哈希被截断。 将密码列大小从 Varchar(40) 更改为 Varchar(125) 解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多