Внешняя аутентификация IPB Forum

Я закодировал внешнюю аутентификацию в PHP, и она работает для 99% всех пользователей. Однако аутентификация не работает для остальных 1%, что довольно много в абсолютных числах. Я уже писал IPB, но они не могут мне помочь.

Я обнаружил, что причина в том, как я пытаюсь восстановить хэш md5. Пожалуйста, еще раз обратите внимание, что я использую точно так же, как рекомендовано IPB ( https://www.invisionpower.com/support/guides/_/advanced-and-developers/miscellaneous/passwords-in-ipboard-r130 ). В следующем примере кода показан пример, в котором созданные md5 DIFFERS из 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% всех пользователей, но не для этого примера и других пользователей.

1

Решение

С выпуском IPB4 они обновляют все старые пароли для шифрования Blowfish. Однако это происходит только после входа пользователя в форум. До этого шифрование старого пароля будет оставаться. Так что на самом деле вы должны проверить, является ли это соленым паролем md5 или пароль зашифрован с помощью blowfish (см. Ниже).

Начиная с выпуска IPB4 шифрование пароля изменено с соленой MD5 на Blowfish:

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

$ 2a $ 13 $ относится к префиксу соли и заранее определенному коэффициенту стоимости, который не должен изменяться.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]