【问题标题】:External Authentication IPB Forum外部认证IPB论坛
【发布时间】:2023-03-07 01:32:01
【问题描述】:

我用 PHP 编写了一个外部身份验证,它适用于 99% 的所有用户。但是,身份验证不适用于其他 1%,这在绝对数字上是相当多的。我已经写了 IPB,但他们无法帮助我。

我发现原因是我尝试重建 md5 哈希的方式。请再次注意,我使用的方式与 IPB (https://www.invisionpower.com/support/guides/_/advanced-and-developers/miscellaneous/passwords-in-ipboard-r130) 推荐的方式完全相同。以下代码示例显示了一个示例,其中创建的 md5 与数据库中的 md5 不同。不过,论坛的正常登录可以使用此密码。

<?php
    $md5 = 'e69618bbe9850fbaf633014f84b8f040';
    $salt = '}i3#W';
    $plainpass = 'Wv&Txq,LYD-su_6';

    $saltedPassword = md5( md5($salt) . md5($plainpass) );
    echo "Desired result: $md5 , actual result: $saltedPassword";
?>

我怎样才能达到我想要的 md5?我想这与用户的密码或用户的盐有关。因此,它适用于 99% 的所有用户,但不适用于本示例和其他用户。

【问题讨论】:

    标签: php md5 ipb


    【解决方案1】:

    随着 IPB4 的发布,他们将所有旧密码更新为河豚加密。然而,这只发生在用户登录论坛套件后。在此之前,旧密码加密将保留。所以实际上你必须检查它是否是一个 md5 加盐密码,或者密码是否用河豚加密(见下文)。

    从 IPB4 版本开始,密码加密从 salted MD5 更改为 Blowfish:

    /* $password is the raw password and $salt is the salt returned from fetchSalt */
    crypt( $password, '$2a$13$' . $salt );
    

    $2a$13$ 是指盐前缀和不应更改的预定成本因素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2014-03-18
      • 2016-04-14
      • 2019-05-11
      • 1970-01-01
      • 2012-08-16
      • 2017-10-16
      相关资源
      最近更新 更多