ЛАБОРАТОРНАЯ РАБОТА ПО ДИСЦИПЛИНЕ
"ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ"
В шифровании методом Цезаря неудобно одно
ключом могут быть только числа от 1 до 9. давайте
попробуем создать программу в которой ключом может быть любая
последовательность символов. Загрузите Дельфи. И
разместите на форме следующие компоненты и измените их свойства в соответствии с рис 12.

Рис 12. Форма после размещения компонентов.
Теперь выделите поле Edit1 и в свойстве Enabled установите значение False. У компонента с тремя стрелочками в свойстве ShowHint установите значение True. Теперь
напишем обработчик события кнопки Шифровать.
if radiobutton1.Checked=true then
label1.Caption:='Исходный текст';
label2.Caption:='Шифрованный текст';
speedbutton5.Hint:='Шифровать текст';
edit1.Enabled:=true;
Запустите программу и проверьте работает ли
переключатель Шифровать.
Теперь напишем обработчик переключателя
Расшифровать
if radiobutton2.Checked=true then
label1.Caption:='Шифрованный текст';
label2.Caption:='Расшифрованный текст';
speedbutton5.Hint:='Расшифровать текст';
edit1.Enabled:=true;
А теперь напишем функцию, которая
собственно и производит шифрование
function crypt(text,key:string;encode:boolean):string;
var
i,keylength:integer;
sign:shortint;
begin
keylength:=length(key);
if encode then sign:=-1
else sign:=1;
for i:=1 to
length(text) do
text[i]:=chr(ord(text[i])+sign*ord(key[i mod keylength+1]));
result:=text;
end;
Теперь напишем функцию, которая определяет
включен ли хоть какой – нибудь переключатель. Если нет то выдать сообщение, что неопределенно действие.
function chek:boolean;
begin
if (form1.RadioButton1.Checked=false) and (form1.RadioButton2.Checked=false) then
begin
messagebox(0,'Действие не определено. ', 'Ошибка', mb_ok+mb_iconerror);
result:=false;
end
else
result:=true;
end;
И последняя функция будет проверять введен ли
ключ или нет.
function kluch(k:string):boolean;
begin
if length(k)=0 then
result:=false else result:=true;
end;
Ну а теперь мы подошли к кнопке
.
Напишем для него обработчик
if chek=false then exit else
if
radiobutton1.Checked then
begin
if kluch(edit1.text)=false then
begin
messagebox(0,'Ключ не задан', 'Шифрование невозможно ',mb_ok+mb_iconwarning);
exit;
end
else
memo2.Text:=crypt(memo1.Text,
edit1.text,false);
end;
if
radiobutton2.checked=true then
begin
if kluch(edit1.text)=false then
begin
messagebox(0,'Ключ не задан ','Расшифровка невозможна ',mb_ok+mb_iconwarning);
exit;
end
else
memo2.text:=crypt(memo1.text,edit1.text,true);
end;
Запустите программу и проверьте е в действии.
Сразу же нажмите кнопку которая производит шифрование.
Должно выйти сообщение. Выберите пункт Шифровать введите текст и нажмите
кнопку. Должно выйти сообщение о том, что не задан ключ. Введите ключ. Вы видите что программа работает. Кнопки очистить пропишите
сами. Это очень легко.
А теперь давайте напишем обработчик кнопки
.
messagebox(0,'Ключом является строка .'
+#13+'Она может содержать любые символы,
включая пробелы.',
'Информация',mb_ok+mb_iconinformation);
Пропишем теперь кнопку Загрузить.
if
opendialog1.Execute=true then
begin
assignfile(f,opendialog1.FileName);
reset(f);
while not eof(f)
do
begin
readln(f,t);
memo1.Lines.Add(t);
end;
closefile(f);
end
else exit;
Переменную f опишите
так f:TextFile; а t:string;
Компоненты Opendialog и SaveDialog точнее
их свойство Filter пропишите только на
текстовые файлы и все файлы. Как это делать посмотрите в методе Цезаря.
Пропишем теперь кнопку Сохранить.
if
savedialog1.Execute=true then
begin
assignfile(f,savedialog1.FileName);
rewrite(f);
write(f,memo2.text);
closefile(f);
end
else exit;
Ну вот и готова наша программа. Запустите и
проверьте результат.