МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
12 Ниже приводится пример реализации шифра Цезаря в среде Delphi. Общая схема шифра для латинского алфавита изображена на рис. 2.
Рис. 2 То есть, отображение происходит по правилу: A-D, B-E, C-F, D-G и т.д. Например, слово BAG будет зашифровано в EDJ. Очевидно, что для обратного преобразования необходимо «сдвинуть» символы в обратную сторону на количество, равное исходному ключу. Шифрование можно выразить общей формулой:
С – шифрованный символ, О – открытый текст, key – ключ (сдвига). Обратное же преобразование будет выполняться по формуле:
С – шифрованный символ, О – открытый текст, key – ключ (сдвига).
Теперь приступим непосредственно к программированию данных шифров.
1. Запустите инструментальную объектно-ориентированную среду программирования Delphi. (Пуск/Программы/ Borland Delphi / Delphi) 2. Создайте новый проект и сохраните его в новой папке AtbashCezar. 3. Поместите на форму следующие компоненты со страниц: a. Standard: i. Label 3 шт; ii. Memo 2 шт; iii. ComboBox 1 шт; iv. RadioGroup 1 шт; v. CheckBox 1 шт; vi. ActionList 1 шт. b. Additional: i. BitBtn 7 шт. c. Dialogs: i. OpenDialog 1 шт; ii. SaveDialog 1 шт. 4. Задайте следующие свойства данным компонентам:
Свойства Glyph(иконка, файл *.ico) компонента BitBtn заполните самостоятельно. Стандартные иконки для кнопок Delphi расположены в C:\Program files\Common files\Borland Shared\Images\Buttons. Также вы можете изменить свойство Font компонентов Label1 и Label2. 5. Расположите компоненты на форме по образцу:
6. Создайте следующие подпрограммы шифрования строк (после implementation): { Шифр Атбаш . Симметричный } function catbash(s:string):string; var i:integer; c,d:char;rez:string; Begin rez:=''; for i:=1 to length(s) do begin c:=s[i]; d:=chr(255-ord(c)); rez:=rez+d; end; catbash:=rez; end; { Шифр Цезаря . Шифрование } function cEcezar(s:string; key:byte):string; var i:integer; c,d:char;rez:string; Begin rez:=''; for i:=1 to length(s) do begin c:=s[i]; d:=chr((ord(c)+ key)mod 255); rez:=rez+d; end; cEcezar:=rez; end; { Шифр Цезаря . Расшифрование } function cDcezar(s:string;key:byte):string; var i:integer; c,d:char;rez:string; begin rez:=''; for i:=1 to length(s) do begin c:=s[i]; d:=chr((ord(c)- key)mod 255); rez:=rez+d; end; cDcezar:=rez; end;
7. Двойным щелчком вызовите редактор компонента Crypto (TActionList) и создайте следующие действия:
8. Для каждого из действий опишите подпрограммы:
procedure TForm1.AtbashExecute(Sender: TObject); var i:integer; Begin for i:=0 to memo1.Lines.Count do memo2.Lines.Add(catbash(memo1.Lines[i])); end; procedure TForm1.ECezarExecute(Sender: TObject); var i:integer;key:byte; Begin key:=strtoint(inputbox('Шифр Цезаря','Введите значение ключа - только целое число','3')); for i:=0 to memo1.Lines.Count do memo2.Lines.Add(cEcezar(memo1.Lines[i],key));
end; procedure TForm1.DCezarExecute(Sender: TObject); var i:integer;key:byte; Begin key:=strtoint(inputbox('Шифр Цезаря','Введите значение ключа - только целое число','3')); for i:=0 to memo1.Lines.Count do memo2.Lines.Add(cDcezar(memo1.Lines[i],key)); end; procedure TForm1.clearExecute(Sender: TObject); Begin memo2.Clear; end; procedure TForm1.changeExecute(Sender: TObject); Begin memo1.Lines:=memo2.Lines; memo2.Clear; end; 9. Опишите подпрограммы для каждой из кнопок BitBtn :
procedure TForm1.BitBtn1Click(Sender: TObject); Begin if clr.Checked then memo2.clear; if combobox1.ItemIndex=0 then atbash.Execute else if action.ItemIndex=0 then ECezar.Execute else DCezar.Execute; end;
procedure TForm1.BitBtn2Click(Sender: TObject); Begin memo1.Clear; end;
procedure TForm1.BitBtn3Click(Sender: TObject); Begin memo2.Clear; end;
procedure TForm1.BitBtn4Click(Sender: TObject); Begin change.Execute; end;
procedure TForm1.BitBtn5Click(Sender: TObject); Begin close; end;
procedure TForm1.BitBtn6Click(Sender: TObject); Begin if Opendialog1.Execute then memo1.Lines.LoadFromFile(opendialog1.FileName); end;
procedure TForm1.BitBtn7Click(Sender: TObject); Begin if Savedialog1.Execute then memo2.Lines.SaveToFile(savedialog1.FileName); end; 10. Запустите проект.
12
Популярное: Почему стероиды повышают давление?: Основных причин три... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ![]() ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (251)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |