【问题标题】:Password_verify not working with mysqlPassword_verify 不适用于 mysql
【发布时间】:2015-10-22 23:56:16
【问题描述】:

我正在使用password_hash 函数将哈希插入数据库作为用户注册的一部分。这很好用,并且在数据库中创建了密码哈希。但是,我无法使用password_verify 验证密码,并且检查始终返回 false。例如:

    $hash = password_hash("rattle",PASSWORD_DEFAULT)

    returns `$hash = $2y$10$fonFqdioDtfJ/Gp7t4orWOdalMHkKQSA8PrFvbgI7LC0LCvYshZ.i`

这已成功插入数据库。但是,password_verify('rattle',$hash) 始终返回 false。我曾尝试在将散列插入数据库之前回显散列并将其用作散列,但仍然没有乐趣。数据库哈希字段设置为 60 个字符。

任何帮助将不胜感激。

【问题讨论】:

    标签: password-recovery


    【解决方案1】:

    经过测试,适用于保存的字符串和动态。总是 60 个字符。

    $hash = password_hash("rattle",PASSWORD_DEFAULT);
    $hashCheckSaved = password_verify("rattle", '$2y$10$KDIzEQjsmlHCP0mjixbBoe9yJE8tY4aNPOZegiwez1zUPkt5217M2');
    $hashCheckDynamic = password_verify("rattle", $hash);
    echo $hash."<br> saved(". $hashCheckSaved . ") dynamic(". $hashCheckDynamic.")";
    echo "<br>";
    echo strlen($hash) . " chars in this string";
    

    【讨论】:

    • 谢谢,但不应该 $hashCheckSaved = password_verify("rattle",'$2y$10$fonFqdioDtfJ/Gp7t4orWOdalMhkKQSA8PrFvbgI7LC0LCvYshZ.i'),使用数据库中保存的哈希?这总是返回 false。
    • hashcheckSaved 正在模拟来自数据库的哈希。确保你在它周围加上单引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多