Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 12:00   #1
ismoil3005
 
Регистрация: 09.04.2012
Сообщений: 6
По умолчанию Парольная защита формы

Здравствуйте. поскажите как реализовать хранение и считывание пароля для "формы запроса пароля, перед запуском основной формы программы " с отдльно созданого файла например user.ini
ismoil3005 вне форума Ответить с цитированием
Старый 24.04.2012, 12:14   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

http://programmersforum.ru/showpost....99&postcount=4
http://programmersforum.ru/showpost....9&postcount=18
Различные варианты
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.04.2012, 12:28   #3
ismoil3005
 
Регистрация: 09.04.2012
Сообщений: 6
По умолчанию

а как быть со сменой пароля. как правиль поменять
ismoil3005 вне форума Ответить с цитированием
Старый 24.04.2012, 12:34   #4
ismoil3005
 
Регистрация: 09.04.2012
Сообщений: 6
По умолчанию

и мне надо что что бы пароль хранился не в зашифрованом виде
ismoil3005 вне форума Ответить с цитированием
Старый 25.04.2012, 00:01   #5
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Смысл хранения в незащещёном виде?
В время учёбы лично я для себя нашёл очен ьпростой метод шифрования пароля, берёш и каждый символ в пароле перводишь функцией orb() вроде так, получает из стокового типа номер символа, сумируешь все цифры и записываешь, а проверка в обратном порядке так же считываешь введёное значение, производишь действия и сравниваешь уже просто впринципе безсмысленые цифры, а не сам пароль...
Dozent вне форума Ответить с цитированием
Старый 25.04.2012, 01:39   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Dozent, вы понимаете, что ваш метод "шифрования" имеет катастрофически много коллизий?

Насчет хранения в незашифрованном виде:
просто уберите в фукции проверки пользователя двойное взятие хеша и запишите в сеттингс.ини пароль и логин в незашифрованном виде.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.04.2012, 08:40   #7
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Ни каогда не было проблем
Dozent вне форума Ответить с цитированием
Старый 25.04.2012, 11:21   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dozent
Ни каогда не было проблем
это не значит, что их нет. Вы просто не наткнулись на них.

абсолютно здравую мысль сравнивать не пароли, а хэш-значения (контрольную сумму) Вы абсолютно дискредитируете своим доморощенным алгоритмом вычисления этой самой хэш-функции.

возьмите свой код.
задайте пароль, например, "123"
теперь попробуйте зайти с паролем "321". получилось? неожиданно, да? а теперь с паролем "132". Тоже получилось?
а с паролем "231" и опять получилось зайти?
а теперь с паролем "033"? тоже зашли?...
Продолжать? Или Вы поняли, что подобное вычисление контрольной суммы недопустимо?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.04.2012, 11:33   #9
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

не не вы не поняли) я складываю не сумму цифр в пароли а их символьное значение которое получается из функции orb()

Код:
procedure  proverka(var sum:integer);
var
x,num_lines,p:integer;
line:string;
begin
AssignFile(outfile, 'C:\WINDOWS\parol.dat');
   {$I-}
Reset(outfile);
   {$I+}
if IOResult=0 then
 begin
   While  not Eof(outfile) do
   begin
   readln(outfile,line);
   p:=StrToInt(line);
 end;
 CloseFile(outfile);
 end;
 IF (p=sum)then Resultat:=true;


 end;

procedure TForm2.Button1Click(Sender: TObject);
var
i:integer;
 s:string;
begin
Resultat:=false;
 sum:=0;
 s:=Edit1.Text;
 For i:=1 to Length(s) do sum:=sum+Ord(s[i]);
 proverka(sum);
 If Resultat then
    begin
      Form2.Close;
      Form1.Show;
    end else
    begin
     MessageDlg('Пароль не верный!',mtError,[mbOk],0);
     Edit1.Clear;
    end;
end;
Это код из какойто самостоялки по програмирования курса третьего

но впринципе) по этому алгоритму '123' будит равно '321'
Dozent вне форума Ответить с цитированием
Старый 25.04.2012, 14:29   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
не не вы не поняли) я складываю не сумму цифр в пароли а их символьное значение которое получается из функции orb()
да всё я понял. (кстати, функция называется ord())

не хотите цифры.
проверяйте сумму паролей: "bcd", "cdb", "bdc"
и, что особенно плохо, возникают ещё коллизии такого рода
"bcd" = "ace" = "aag"
но ещё хуже, что сумма "bcd" = "#####z" -
т.е. даже пароли разной длины и состоящие из АБСОЛЮТНО других символов
Ваша программа воспримет как нормальный пароль!

Поэтому, так, как Вы делаете, так делать НЕЛЬЗЯ!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокировка или парольная защита kholoshchak Общие вопросы Delphi 0 16.05.2011 14:31
[Delphi] Лабораторная "Парольная аутентификация" felixXx Помощь студентам 0 13.03.2010 12:51
[Delphi] Лабораторная "Парольная аутентификация" felixXx Помощь студентам 0 13.03.2010 12:31
Парольная защита Andrey174rus Microsoft Office Word 2 15.11.2009 14:38
Защита формы паролем Илюха Общие вопросы Delphi 7 29.09.2007 20:53