Автор Гілка: perl+mysql+crypt  (Прочитано 3320 раз)

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
perl+mysql+crypt
« : 2005-10-12 11:27:17 »
є postfix + mysql,
структура таблиці mysql (скорочено) така:

логін  (простий теск)
пароль (створено з допомогою crypt('pass') )

портрібно щоб користувачі могли самі міняти собі паролі..
створюю на perl веб-форму для вводу логіну і паролю,
отримую відповідно їх, але як перевірити дані з форми і таблиці, з логіном проблем нема, бо це простий текст, а як пароль перевірити,  він ж зашифрований ????????????????????
може його можна якось розшифрувати ????????

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: perl+mysql+crypt
« Відповідей #1 : 2005-10-12 12:00:18 »
Зашифрувати простий пароль і порівняти з записом в базі. В усякому разі копати потрібно саме в цьому напрямку.
dd if=/dev/zero of=/dev/null

Відсутній old

  • Дописувач
  • **
  • дописів: 60
  • Карма: +0/-0
  • Що новенького?
Re: perl+mysql+crypt
« Відповідей #2 : 2005-10-12 12:26:35 »
:-) По ідеї весь сенс криптування власне у незворотності. Вихід -- порівнювати закриптований результат.

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: perl+mysql+crypt
« Відповідей #3 : 2005-10-12 13:38:34 »
але коли шифрувати одне й те саме слово кілька раз, то кожного разу інший результат виходить...

Відсутній old

  • Дописувач
  • **
  • дописів: 60
  • Карма: +0/-0
  • Що новенького?
Re: perl+mysql+crypt
« Відповідей #4 : 2005-10-12 14:58:01 »
crypt крім паролю бере на вхід також salt. Принаймні так каже man crypt:

       char *crypt(const char *key, const char *salt);

DESCRIPTION
       crypt  is  the  password  encryption  function.  It is based on the Data
       Encryption Standard algorithm  with  variations  intended  (among  other
       things) to discourage use of hardware implementations of a key search.

       key is a user's typed password.

       salt  is a two-character string chosen from the set [a-zA-Z0-9./].  This
       string is used to perturb the algorithm in one of 4096 different ways.

Може вся сіль у salt-і?  

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: perl+mysql+crypt
« Відповідей #5 : 2005-10-12 15:44:34 »
а як взнати  цей salt

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: perl+mysql+crypt
« Відповідей #6 : 2005-10-12 15:47:33 »
Необхідно використовувати те ж саме значення, що використовується при хешуванні. Не виключено, що для цього використовується сам пароль.

А як це взнати? Запитайте у програмки за допомогою якої хешовані паролі заносяться до бази даних.
dd if=/dev/zero of=/dev/null

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: perl+mysql+crypt
« Відповідей #7 : 2005-10-12 15:53:02 »
я це робив mysql-ем,
тобто шукати в документаціїї mysql

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: perl+mysql+crypt
« Відповідей #8 : 2005-10-12 16:00:41 »
В будь-якому разі потурбуйтесь, щоб хеші в базі і створені з пароля введеного користувачем створювались за допомогою одного й того ж алгоритму.
« Змінено: 2005-10-12 16:01:03 від borman »
dd if=/dev/zero of=/dev/null

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: perl+mysql+crypt
« Відповідей #9 : 2005-10-12 16:09:35 »
тобто мені треба спочатку створити пароль (завжди однаковим способом), а потім його запихати в базу ????
чи можете сказати алгоритм ????

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: perl+mysql+crypt
« Відповідей #10 : 2005-10-12 16:53:40 »
Перш за все потрібно потурбуватися, щоб паролі в базі могли використовуватись при роботі з поштовою системою. Це правило повинно бути основним і визначати все інше. Тому раджу не чіпати базу доки не будете повністю розуміти всі дії, які захочете провести.

Дізнайтесь, за допомогою якого алгоритма шифруються паролі в базі зараз. Далі почитайте документацію по Perl -- повинен бути модуль, який допоможе вам зашифрувати введений користувачем пароль тим же самим алгоритмом (стандартний crypt використовує DES і зовсім не обов'язково, що DES використовується при шифруванні паролей в базі). Потім скористайтесь відповідною функцією для шифрування, зашифруйте введений користувачем пароль та порівняйте те що вийшло з записом у базі. Здається, все.
« Змінено: 2005-10-12 16:54:37 від borman »
dd if=/dev/zero of=/dev/null

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: perl+mysql+crypt
« Відповідей #11 : 2005-10-12 20:37:09 »
а як взнати  цей salt

Це перші дві літери закриптованого паролю.

Crypt дає дуже слабкий захист - чому не використати хоча б md5? :-/
[Fedora Linux]

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: perl+mysql+crypt
« Відповідей #12 : 2005-10-13 12:21:06 »
а чи працює  courier-imap з md5