Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 1
Всего онлайн: 1
Зарегистрировано юзеров: 6943
Комментариев на сайте: 654
Новый юзер: MatthewMat



Последние комментарии
c
Davidpab прокомментировал "Урок 24 - Изучаем компонент PaintBox":
&#1047;&#1072;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; seo &#1087;&#1086;&#1080;&#1089;&#1082;&#1086;&#1074;&#1091;&#1102; &#1086;&#1087;&#1090;&#1080;&#1084;&#1080;&#1079;&#1072;&#1094;&#1080;&#1102; &#1089;&#1072;&#1081;&#1090;&#1072;, <a href=http://seoprofisional.ru/bazy>базы для xrumer</a> &#1047;&#1072;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; &#1091;&#1089;&#1083;&#1091;&#1075;&#1080; &#1087;&#1086; &#1087;&#1088;&#1086;&#1076;&#1074;&#1080;&#1078;&#1077;&#1085;&#1080;&#1102; &#1089;&#1072;&#1081;&#1090;&#1072; &#1055;&#1086; &#1074;&#1089;&#1077;&#1084; &#1074;&#1086;&#1079;&#1085;&#1080;&#1082;&#1096;&#1080;&#1084; &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1072;&#1084; &#1042;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1086;&#1073;&#1088;&#1072;&#1090;&#1080;&#1090;&#1100;&#1089;&#1103; &#1074; &#1089;&#1082;&#1072;&#1081;&#1087; &#1083;&#1086;&#1075;&#1080;&#1085; [b]pokras7777[/b] &#1056;&#1072;&#1089;&#1082;&#1088;&#1091;&#1090;&#1082;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072; &#1087;&#1086;&#1076; &#1082;&#1083;&#1102;&#1095; fhdxxxxxd
Everettrof прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Как быть не могу разобраться или тут хочу заказать металлоизделия Делается тут или в другом месте искать навесы из полекарбоната Такие фирмы это делают или я не правильно понимаю, нужно сделать а я вот выбираю и не могу понять,,, сварка металла это же они могут сделать??? https://steelcentury.ru пока на них смотрю

Защита формы паролем

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

Теперь непосредственно займемся разработкой формы запроса пароля. Хотя разрабатывать нам ничего и не надо: самый простой вариант такой формы Delphi поставляет. Вам надо выбрать пункт меню File -> New, в открывшемся диалоговом окне выберите закладку Dialogs, щелкните на значке Password Dialog и нажмите Ok. На экране появится готовая форма запроса пароля с именем PasswordDlg.

На этой форме будут две кнопки Ok и Cancel, текстовое поле ввода пароля с именем Password, метка Label1 с надписью Enter Password. Заменим свойство Caption метки Label1 на более приятное русскому глазу 'Введите пароль'. Также поменяем свойство Caption и для самой формы на 'Запрос пароля', например.

Обратите внимание на свойство PasswordChar поля ввода Edit равно * (звездочке) - это означает, что при вводе все символы будут заменены на звездочки.

Нам необходимо добиться, чтобы форма запроса пароля появлялась на экран раньше основной формы. Это делается так. В обработчике события OnShow главной формы нужно написать такой код:

PasswordDlg.ShowModal;
Этот код запустит нашу форму запроса пароля (PasswordDlg) перед основной. И сделает недоступной основную форму, до закрытия формы запроса пароля. Теперь запустите программу, компилятор спросит Вас хотите ли Вы добавить в Uses, модуль второй формы, конечно же надо ответить, что хотите!

Далее поступим следующим образом. Пароль будет хранится в виде константы в нашем приложении. При вводе правильного пароля будет открываться главная форма, а при вводе неправильного пароля, нажатии кнопки Cancel и других попытках закрыть форму запроса будем завершать наше приложение.

Для этого напишем обработчик для события OnCloseQuery для формы запроса. Здесь мы будем сравнивать содержимое строки ввода пароля с нашей константой, которую объявим в этом же обработчике. Таким образом получается такой код:
procedure TPasswordDlg.FormCloseQuery(Sender: TObject; 
var CanClose: Boolean); 
const pass='велкам'; //наш праоль 
begin 
if Password.Text = pass then CanClose:=true 
else Application.Terminate; 
end;
Вот мы и реализовали самый простой способ защиты формы. Если хотите сравнивать пароль без учета регистра, то нужно обе строки преобразовать, например, в нижний регистр. Для этого надо поменять всего одну строку:
if Password.Text = pass then CanClose:=true
надо заменить на:
if lowerCase(Password.Text) = lowerCase(pass) then CanClose:=true
Теперь попробуем защитить форму паролем, который будет храниться в зашифрованном виде. Зашифруем пароль самым простым способом - Xor. Для этого напишем свою функцию:
function TPasswordDlg.xortext(text:string):string; 
var key, longkey : string; 
i : integer; 
toto: char; 
begin 
key:=`da`; //ключ 
for i := 0 to (length(text) div length(key)) do 
longkey := longkey + key; 
for i := 1 to length(text) do begin 
toto := chr((ord(text[i]) XOR ord(longkey[i]))); 
result := result + toto; 
end; 
end;
Через свое имя функция будет возвращать зашифрованную строку переданную в параметре Text. Не забудьте объявить эту функцию в разделе Public:
public 
{ public declarations } 
function xortext(text:string):string;
Теперь поменяем обработчик события OnCloseQuery, описанный в первом пример, на такой:
procedure TPasswordDlg.FormCloseQuery(Sender: TObject; 
var CanClose: Boolean); 
var pass:string; 
begin 
pass:=xortext('велкам'); 

if xortext(Password.Text) = pass then CanClose:=true 
else Application.Terminate; 
end;
Как Вы видите поменялось совсем не много, теперь пароль в зашифрованном виде можно хранить например в каком-нибудь файле. Так что защищайте Ваши формы :-)

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 30 Марта 2014
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.