我用PHP编写了外部身份验证,它适用于99%的用户。然而,其他1%的认证不起作用,这在绝对数字上是相当多的。我已经写过IPB了,但是他们帮不了我。
我发现原因在于我试图重建md5哈希的方式。请再次注意,我正在使用完全相同的方式,建议的IPB ( /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?我想这与用户的密码或用户的salt有关。因此,它适用于99%的所有用户,但不适用于此示例和其他用户。
发布于 2017-11-29 16:16:42
随着IPB4的发布,他们将所有旧密码更新为河豚加密。然而,只有当用户登录到论坛套件时才会发生这种情况。在此之前,旧的密码加密将保持不变。因此,实际上,您必须检查它是一个md5盐渍密码,还是密码是用河豚加密的(见下文)。
在IPB4发布时,密码加密从盐渍MD5更改为Blowfish:
/* $password is the raw password and $salt is the salt returned from fetchSalt */
crypt( $password, '$2a$13$' . $salt );$2a$13$是指盐前缀和不应更改的预先确定的成本因素。
https://stackoverflow.com/questions/32114918
复制相似问题