php - password_verify() 在 php 中不起作用

标签 php mysql passwords php-password-hash

我已经使用 password_hash 创建了一个密码,如下所示:

$password = password_hash('password123', PASSWORD_DEFAULT);

这存储在 MySQL 数据库中的 varchar(60) 列中。

在我的登录表单中,我使用:

if(password_verify($password, $foundUser->Password){ /*login*/ }

哪里$password是登录表单的明文输入,$foundUser->Password是存储在数据库中的散列,但是 password_verify()函数总是返回 false。

我已经使用以下代码检查了我的输入:

echo "Password: {$password} <br>"; echo "Found password: ".$foundUser->Password."<br>";

哪些输出:

Password: password123 Found password: $2y$10$8.ICQHCyCPzS.xygPO4cfuHsHZb6Kuxynn8/uUHOU1.7gY.UhSIXa

所以我有理由相信我正在输入正确的密码并从我的数据库中获取正确的哈希值。

我查看了 this question 中的链接寻求答案,但还没有让它发挥作用。有谁知道为什么 password_verify() 返回 false?

最佳答案

设置数据库列值大于 60,因为加密的密码字符可能超过 100 个。并且 $password = password_hash('password123', PASSWORD_DEFAULT);此函数返回每次都可能更改的加密密码。

关于php - password_verify() 在 php 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978868/

相关文章:

python - 如何在 django 中重用原始用户的密码?

linux - 使用Go生成适用于`/etc/shadow`的哈希密码字符串

php - Laravel 5 - PHP Storm - 希伯来语播种机

php - MYSQL 安装 BuildEngine 时出错

javascript - 单击元素时调用的切换功能?

mysql - 将 IN 与 LIMIT 一起使用时输出是随机的吗?

Mysql加入排序

php - 使用管理部分进行 block 定位

php pdo csv 文件写入数据库

python - Base64 身份验证 Python