UPDATE:
ОТВЕТ НАЙДЕН НА:
http://community.invisionpower.com/tracker/issue-21634-md5-once-password-does-not-decode-html-entities/
Я хочу создать отдельную страницу, используя свои учетные данные на форуме (я использую Invision Power Board) , поэтому я начал изучать, как работает пароль.
В основном на таблице членов у вас есть таблицы members_pass_hash и members_pass_salt, и шифрование выполняется следующим образом:
/**
* Generates a compiled passhash.
* Returns a new MD5 hash of the supplied salt and MD5 hash of the password
*
* @param string User's salt (5 random chars)
* @param string User's MD5 hash of their password
* @return string MD5 hash of compiled salted password
*/
static public function generateCompiledPasshash( $salt, $md5_once_password )
{
return md5( md5( $salt ) . $md5_once_password );
}
После этого я начинаю делать свою страницу, но независимо от того, что я делаю, пароль никогда не совпадает с паролем в базе данных.
Даже использование MD5(CONCAT(MD5(members_pass_salt),MD5('mypass'))
direct в mysql не дает мне правильного значения ...
Я также искал в сообществах и на форуме ipb, но не могу сузить, в чем может быть проблема.
Мой код, который создает пароль, выглядит следующим образом:
$password = $this->input->post('password');
$md5_once_password = md5($password);
$password_hash = md5( md5( $salt ) . $md5_once_password );
$ salt получен из базы данных, и я отправил его на свою страницу, чтобы убедиться, что это тоже правильная соль.
Продолжая в коде IPB, также есть:
if ( $member['members_pass_hash'] == self::generateCompiledPasshash( $member['members_pass_salt'], $md5_once_password ) )
{
return true;
}
else
{
return false;
}
Возвращаясь к исходному коду, который я выложил из IPB, это означает, что пароль сопоставляется с полем members_pass_hash
из таблицы участников с md5( md5( $salt ) . $md5_once_password )
Есть идеи, что я могу сделать неправильно, чтобы пароль не совпадал?
Кодировка где-нибудь или что-нибудь?
ОБНОВЛЕНИЕ с хэшами для тестирования:
Этот работает нормально:
salt: Do.|O
password: fsk23478cf
hash: f3f3c75110ea9a27a1c01e580676997f
Этот не работает, пока не знаю почему:
salt: ppxps
password: fsk23478cf!*
hash saved by the forum: d060c2fb78c5b8a9e9d303c7b4fab456
hash created by my aap: 0df0c7f24f7f79bd7ad8e501f5447986
UPDATE2:
Устранена проблема, связанная с exclamation mark
паролем, но все еще не знаю, что его вызывает и как решить.
Пароли с !
не будут совпадать должным образом, и сейчас я пытаюсь выяснить, делает ли форум что-то особенное с !
, которое я не нашел, все, что я обнаружил, это то, что он выполняет обрезку поле пароля, а затем md5, как указано выше.