Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Кодирование в MD5 как у SMF


Автор: kefir01 22.6.2007, 19:16
Хочу связать форум SMF со своим сайтом. Проблема в том как устроить аутентификацию.

Пароль юзера в базе данных выглядит так
7d634ccefc5bdaea3624d5b352e6e994fa426fca

Он же, кодированный мной таким скриптом
Код

my $pass = "nigger";
my $enc = md5_hex($pass);

вот так
c35312fb3a7e05b7a44db2326bd29040

Не можете подсказать как правильно закодировать?

upd нашел в таблице БД поле passwordSalt равное 6c13 для этого юзера, неизменый при смене пароля. Так понимаю он участвует в кодировании... Но как?!  smile 
upd1 нашел принцип создания хешей но на PHP

Код

$passhash = sha1(strtolower($username) . $password);  


Соответственно вопрос переходит в то как осуществить такое кодирование на Perl

Автор: Nab 23.6.2007, 07:56
Вообщето, salt используеться при получении хеша с помощью стандартной crypt.

$hash = crypt($pass, $salt);

Но такое длинное, думаю это какоето дополнительное предбразование.... А почему бы не глануть в исходниках самой SMF и поглядеть код который проверяет пароль.

Добавлено через 6 минут и 16 секунд
Но, насколько я понимаю вам нужна общая аутентификация, чтобы человеку не нужно было регаться на форуме, или зарегавшись на нем не нужно было отдельно аутентифицироваться на самом сайте.... Тогда подход ваш в корне не верен... 
Лучше всего вам нужно будет проверять не пароль человека, а его состояние в системе аутентификации форума, то есть проверять зарегался он там или нет, а при необходимости показывать страничку аутенификации именно форума... во первых, чтоб не делать свою, во вторых, единый интерфейс, в третих будет меньше ошибок безопасности...

Автор: kefir01 24.6.2007, 21:23
На самом деле я хотел сделать так чтобы регистрация на сайте приравнивалась к регистрации на форуме.
И соответственно иметь свой вариант оной. Немного некрасиво когда с сайта тебя выкидывает на регистрацию на форуме.
Юзеры путаться будут.

Спасибо за помощь - буду продолжать поиски.

Автор: kefir01 24.6.2007, 22:13
Digest::SHA1 - ответ на вопрос если что.
Код

use Digest::SHA1 qw(sha1_hex);
my $hash = sha1_hex(lc($data->{memberName}).$pass);    


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)