Forum Webscript.Ru

Программирование => Perl => Тема начата: PoKoT от 22 Января 2002, 11:49:48

Название: На перлах есть crypt()... а обратно? :-)
Отправлено: PoKoT от 22 Января 2002, 11:49:48
Подскажите, пожалуйста, есть такая функция crypt() на перле, а есть ли функция для обратного преобразования строки (символов)? То ли лыжи у меня не едут, то ли я уже совсем.... не могу найти ничего. Нужно ИМЕННО обратное преобразование.
Заранее благодарен.
Название: На перлах есть crypt()... а обратно? :-)
Отправлено: NeoNox от 22 Января 2002, 11:53:14
Нет. Функции декодирования не существует...
Название: На перлах есть crypt()... а обратно? :-)
Отправлено: PoKoT от 22 Января 2002, 11:58:00
NeoNox
Благодарю!
Название: если
Отправлено: Green Kakadu от 22 Января 2002, 23:50:45
если нужно что-то кодировать, с возможностью дальнейшего раскодирования, то есть такие модули - используют свои принципы, алгоритмы. Один из весьма популярных  - модуль DES, глянь на cpan.org

Только сам понимаешь, если есть воз-ть расшивровать, то это могут сделать и другие, а не только ты.
Название: <*>
Отправлено: Oak от 23 Января 2002, 03:00:57
А может РоКоТ не доконца представляет зачем нужна crypt и как ею пользоваться
для проверки пароля ?
Название: На перлах есть crypt()... а обратно? :-)
Отправлено: PoKoT от 23 Января 2002, 11:14:14
Oak
Цитировать
не доконца представляет зачем нужна crypt

Согласен. Только начал изучать перл. Потому и обращаюсь к знающим людям в конференции - за советом и помощью. Но если Вы будете так любезны, то может быть разъясните немного про crypt()? Ведь я здесь не единственный чайник, надеюсь? :-) Может кому-то Ваша информация тоже пригодится...
Название: Разяснения.
Отправлено: Oak от 23 Января 2002, 15:23:51
crypt - это преобразование пароля в одну сторону (приэ этом могут использоваться разные алгоритмы - DES или MD5).
  Т.е пароль человека единожды превращается в абракадабру и так и сохраняется на сервере.
  В результате - если нехорошие люди вломятся на сервер, они не получат список паролей пользователей.

Далее - как авторизирвать? А просто. Если ты берешь одну и ту же строку - то она превращается в одну и ту же абракадабру
 По ней их и сравниваешь!  :)
  A =crypt=> B
  C =crypt=> B
   B == B значит A = C

Да.. A и C теоретически могут отличаться (т.е несколько разных паролей превращаться в одно и то же), но это маловероятно.

Затем - чтобы уберечися от перебора по словарю еще добавили "solt" - оно вносит случайность в процесс.
Это 2 буквы. crypt("pass","ac").
Т.е чтобы 1й раз сохранить пароль делаем $RRR=crypt("pass") , a чтобы проверить  - берем из этой аброкадабры первые 2 буквы
(это для DES) и увидешь какие 2 (для MD5) и проверяешь:
  if ( strstr($RRR,crypt("pass-ot-usera",первые 2 буквы $RRR))

Вот..  Понятно изложил или подробнее ?