2015-08-20 2 views
1

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

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

ответ

0

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

Смежные вопросы