【问题标题】:bcrypt returning wrong calulationbcrypt 返回错误的计算
【发布时间】:2015-03-16 18:10:07
【问题描述】:

我是 bcrypt 的新手,这是我返回哈希密码的测试代码

if (!$errName && !$errEmail && !$errPassword) {
require "libs/password.php";

        $hash = password_hash($password, PASSWORD_BCRYPT); //password_compat function
if (password_verify($password, $hash)) {
  $result = "$name\n$hash\n$email";
} else {

    echo "didnt work";
}}

当我在 https://www.dailycred.com/blog/12/bcrypt-calculator 验证它时,它与示例密码“1234”不匹配返回 $2y$10$Wz/1MRBMFauEtGdJNeaKq.5INBmig0Nip2urekRON8ekLkYesdj6i 当我通过dailycred验证它时,我得到了无效的盐修订

【问题讨论】:

    标签: php bcrypt


    【解决方案1】:

    您的问题是 PHP 库使用了新的“2y”前缀。

    它被用在这个库和其他一些库中,因为带有“2a”前缀的原始代码有一个错误,需要区分新旧、安全的代码。

    所以只需简单地将 2y 替换为 2a。

    【讨论】:

    • 如果 2y 无效,为什么它通过了第一次测试?如果是那么它哪里出错了?为什么我应该使用不安全的易受攻击的前缀,我想知道我错在哪里而不是如何欺骗系统
    • 你没有错。前缀本身什么也不做,完全什么也不做。它只是向用户/计算机显示使用了什么散列函数。 “2a”是 bcrypt 的原始前缀,但 PHP 库有一个错误,他们进行了修复。为了帮助编码人员,他们引入了“2y”前缀——它只是表明使用了安全版本。这个网站上使用的语言库可能没有这个错误,并保持默认的“2a”前缀。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多