Внешняя аутентификация IPB Форум

Я закодировал внешнюю аутентификацию на 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% всех пользователей, но не для этого примера и других пользователей.


person kentor    schedule 20.08.2015    source источник


Ответы (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$ относится к префиксу соли и заранее определенному коэффициенту стоимости, который не следует изменять.

person kentor    schedule 29.11.2017