Forum Webscript.Ru
Программирование => Perl => Тема начата: PoKoT от 22 Января 2002, 11:49:48
-
Подскажите, пожалуйста, есть такая функция crypt() на перле, а есть ли функция для обратного преобразования строки (символов)? То ли лыжи у меня не едут, то ли я уже совсем.... не могу найти ничего. Нужно ИМЕННО обратное преобразование.
Заранее благодарен.
-
Нет. Функции декодирования не существует...
-
NeoNox
Благодарю!
-
если нужно что-то кодировать, с возможностью дальнейшего раскодирования, то есть такие модули - используют свои принципы, алгоритмы. Один из весьма популярных - модуль DES, глянь на cpan.org
Только сам понимаешь, если есть воз-ть расшивровать, то это могут сделать и другие, а не только ты.
-
А может РоКоТ не доконца представляет зачем нужна crypt и как ею пользоваться
для проверки пароля ?
-
Oak
не доконца представляет зачем нужна crypt
Согласен. Только начал изучать перл. Потому и обращаюсь к знающим людям в конференции - за советом и помощью. Но если Вы будете так любезны, то может быть разъясните немного про crypt()? Ведь я здесь не единственный чайник, надеюсь? :-) Может кому-то Ваша информация тоже пригодится...
-
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))
Вот.. Понятно изложил или подробнее ?