1. Особисті алфавіти
Створила власний алфавіт, як масив символів, можливо безпосереднім описом послідовності проходження символів.
Встановила в форму компонент Button 1-3
Малюнок 1
алгоритм шифрування Віженер дільник
procedure TForm1.Button3Click (Sender: TObject) ;: array [0..15] of char=( 0 , 1 raquo ;, 2 raquo ;, 3 raquo ;, 4 raquo ;, 5 raquo ;, 6 raquo ;, 7 raquo ;, 8 raquo ;, 9 raquo ;, A raquo ;, B raquo ;, C raquo ;, D raquo ;, E raquo ;, F );:Integer;.Caption:= Laquo; raquo ;; i:=0 to 15 do .Caption:=Form1.Caption + A [i] + raquo ;;;
Створити алфавіт, як масив символів, можливо шляхом використання функції Succ, тому я вказала її як початковий параметр перший символ.
TForm1.Button1Click (Sender: TObject) ;: array [1..32] of char;:Integer;
{Строєм алфавіт}:=1; [i]:= А raquo ;; (i, 1); [i]:=Succ (A [i - 1]); i gt;=32;.Caption:= Laquo; raquo ;; i:=1 to 32 do .Caption:=Form1.Caption + A [i] + raquo ;; ;
Створити зворотний алфавіт, як масив символів, можливо шляхом використання функції Pred, вказавши при цьому як початковий параметр останній символ, що ми власне і зробили.
TForm1.Button2Click (Sender: TObject) ;: array [1..32] of char;:Integer; :=1; [i]:= Я raquo ;; (i, 1); [i]:=Pred (A [i - 1]); i gt;=32;.Caption:= Laquo; raquo ;; i:=1 to 32 do//в циклі від 1 до 32.Caption:=Form1.Caption + A [i] + raquo ;; ;
. Шифр Віженера - модифікований шифр Цезаря, шифр XOR
Встановила в форму компонент Edit1 (введення пароля), три компонента Мемо1,2,3, три компонента Label 1,2,3 (написи), три компонента GroupBox 1, 2, 3 в які встановити по 2 кнопки Button (вид вказаний на малюнку 2).
Рис. 2. Розташування компонентів у формі
В якості алфавіту використовувала вбудовану таблицю ASCII (Z - 256)
Алгоритм Віженера (модифікований шифр Цезаря)
Декларуємо функції
{Private declarations} VCR (PSW, TXT: string; CRT: boolean): string;
Тіло функції
{Шифрування, Дешифрування по Віженера}
function TForm1.VCR (PSW, TXT: string; CRT: boolean): string ;, NS: integer;:string; := raquo ;; :=1; i:=1 to length (TXT) do CRT=true then:=TMP + chr (ord (TXT [i]) + ord (PSW [NS])):=TMP + chr ((ord (TXT [i]) +256) -ord (PSW [NS]));:=NS + 1; NS gt; length (PSW) then NS:=1; ;:=TMP; ;
Команда шифрування
TForm1.Button1Click (Sender: TObject) ;. Text:=VCR (Edit1.Text, Memo1.Text, true) ;;
Команда дешифрування
TForm1.Button2Click (Sender: TObject) ;. Text:=VCR (Edit1.Text, Memo2.Text, false) ;;
При перевірці роботи функції (зашифрувала і розшифрувала текст, змінюючи пароль) помилок не виявилося.
Декларування функції
{Private declarations} VCR (PSW, TXT: string; CRT: boolean): string; CZR (PSW, TXT: string; CRT: boolean): string;
Тіло функції
TForm1.CZR (PSW, TXT: string; CRT: boolean): string ;, NS: integer;:string; := raquo ;; :=1; i:=1 to length (TXT) do CRT=true then:=TMP + Chr ((Ord (TXT [i]) + Ord (PSW [NS])) mod 256):=TMP + Chr ((Ord (TXT [i]) - Ord (PSW [NS])) mod 256);:=NS + 1; NS gt; length (PSW) then NS:=1; ;:=TMP; ;
Команда шифрування
TForm1.Button3Click (Sender: TObject) ;. Text:=CZR (Edit1.Text, Memo1.Text, true) ;;
Команда дешифрування
TForm1.Button4Click (Sender: TObject) ;. Text:=CZR (Edit1.Text, Memo2.Text, false) ;;
При перевірці роботи функції (зашифрувала і розшифрувала текст, змінюючи пароль) помилок не виявилося.
Переконалася, що шифри Віженера і модифікований шифр Цезаря дають один і той же результат, тобто реалізують однаковий алгоритм з різною програмною реалізацією.
Шифрування методом XOR
Декларування функції
{Private declarations} VCR (PSW, TXT: string; CRT: boolean): string; CZR (PSW, TXT: string; CRT: boolean): string; TXT_XOR (PSW, TXT: string): string;
Тіло функції
TForm1.TXT_XOR (PSW, TXT: string): string ;, NS: integer;:string; :...