SITE LOGO
Меню сайта
Категории каталога
Кодинг новичкам [11]
Кодинг в интернете [1]
Локальный кодинг [0]
Прочее [0]
Наш опрос
Какой операционной системой вы пользуетесь

[ Результаты · Архив опросов ]

Всего ответов: 131
Главная » Файлы » Програмирование » Кодинг новичкам

Защищаем форму паролем
[ ] 2006-11-06, 10:21 PM
Начнем с примитивов...


Т.е. при запуске приложения пользователь должен будет ввести пароль, чтобы получить доступ к главной форме иначе приложения закроется.
Значит так, мы создаем обычную форму, в нашем примере можно даже пустую, роли это не играет.
Затем поступаем следующим образом: File -> New -> Other -> вкладка Dialogs -> Password Dialog.
Теперь нам надо, чтобы форма запроса пароля появлялась раньше, чем главная форма. Для этого для главной формы пишем обработчик OnShow:
PasswordDlg.showmodal;
Есть? Идем дальше. Пароль у нас будет храниться в виде константы и если введен неправильный пароль, то приложение завершится. Сделаем обработчик формы запроса пароля OnCloseQuery:

const pass = ‘наш пароль’;
begin
if Password.Text= pass then CanClose:= true
else Application.Terminate;
end;
Вот и все, если Вы хотите, чтобы запрос пароля не обращал внимание на регистр, то нужно преобразовать все например в нижний регистр:
If lowercase(Password.Text)= lowercase(pass) then CanClose:= true;

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

function TPasswordDlg.codexor(text: string): string;
key, longkey: string;
i : integer;
toto : char;
begin
key:=’по Вашему вкусу’;
for i:=0 to (length(text) div length(key)) do
longkey:= longkey + key;
for i:=1 to legth(text) do
begin
toto:= chr((ord(text[i]) xor ord(longkey[i])));
result:= result + toto;
end;
end;


Вот теперь наша функция будет возвращать зашифрованную строку переданную в параметре Text. Только не забываем объявлять нашу функцию в разделе Public:
{Public declarations}
Function codexor(text: string): string;

Осталось изменить обработчик события OnCloseQuery формы запроса пароля:

Var
pass: string;
begin
pass:= codexor(‘по Вашему вкусу’);
if codexor(Password.Text)= pass then CanClose:= true
else Application.Terminate;
end;

Ну вот на этом и все!
Удачного кодинга и спасибо за внимание!

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

 

Категория: Кодинг новичкам | Добавил: bshack
Просмотров: 1148 | Загрузок: 0 | Комментарии: 1 | Рейтинг: 0.0/0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024Сайт управляется системой uCoz