Текст программы биграммного шифрования Плейфера
⇐ ПредыдущаяСтр 2 из 2 Владение языками программирования позволяет значительно расширить круг выполняемых задач специалистом по защите информации и более полно использовать возможности компьютера. Данная программа реализована на языке Delphi 7. Delphi – Borland Delphi представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI), или 32-битных консольных приложений (программ, которые не имеют графического интерфейса). Ниже приведен текст программы «Биграммного шифрования Плейфейра»: unit Unit1;
interface
uses Windows, Messages, MATH, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls, Buttons, XPMan, Menus;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Memo2: TMemo; Memo3: TMemo; Memo1: TMemo; StringGrid1: TStringGrid; GroupBox1: TGroupBox; UpDown1: TUpDown; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; XPManifest1: TXPManifest; StatusBar1: TStatusBar; MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Open1: TMenuItem; Save1: TMenuItem; N1: TMenuItem; Savedecrypt1: TMenuItem; Edit1: TMenuItem; Crypt1: TMenuItem; Decrypt1: TMenuItem; Clear1: TMenuItem; About1: TMenuItem; About2: TMenuItem; procedure Button2Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Exit1Click(Sender: TObject); procedure Save1Click(Sender: TObject); procedure Savedecrypt1Click(Sender: TObject); procedure Open1Click(Sender: TObject); procedure Clear1Click(Sender: TObject); procedure Crypt1Click(Sender: TObject); procedure Decrypt1Click(Sender: TObject);
procedure About2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; a: array of array of char; rowk,colk:integer; alf:string; implementation
uses AboutF;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject); begin if OpenDialog1.Execute then begin memo1.Lines.LoadFromFile(OpenDialog1.FileName); statusbar1.Panels[0].Text:='Текст загружен'; end; end;
procedure TForm1.Button7Click(Sender: TObject); begin Memo1.Clear; Memo2.Clear; Memo3.Clear; Memo1.SetFocus; button4.Enabled:=false; button5.Enabled:=false; button6.Enabled:=false; statusbar1.Panels[2].Text:=inttostr(length(memo1.Text)); statusbar1.Panels[0].Text:='Поле с открытым текстом очищенно'; form1.Decrypt1.Enabled:=false; form1.Savedecrypt1.Enabled:=false; form1.Save1.Enabled:=false; end; procedure TForm1.Button8Click(Sender: TObject); begin close; end;
procedure TForm1.Button5Click(Sender: TObject); begin if savedialog1.Execute then begin Memo2.Lines.SaveToFile(savedialog1.FileName); statusbar1.Panels[0].Text:='Зашифрованый текст сохранен'; end; end;
procedure TForm1.Button6Click(Sender: TObject); begin if savedialog1.Execute then begin memo3.Lines.SaveToFile(savedialog1.FileName); statusbar1.Panels[0].Text:='Расшифрованый текст сохранен'; end; end;
//заполняем матрицу символами procedure TForm1.Button1Click(Sender: TObject); var i,j,k:integer; begin k:=1; colk:=form1.StringGrid1.ColCount; rowk:=stringgrid1.RowCount; setlength(a,colk,rowk); alf:=#039+'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя!@#№$;%^:&?*()-_+=[]/\{}<>.,123456789|~"Ї°±™ґµ¶'+#13#10; for i:=0 to colk-1 do for j:=0 to rowk-1 do begin a[i,j]:=alf[k]; with StringGrid1 do begin Cells[i,j]:=a[i,j]; inc(k); end; end; button3.Enabled:=true; statusbar1.Panels[3].Text:='Матрица загружена'; end;
function prob(ss:string;lenn:integer): string; var s1:string; i,j,k:integer; begin k:=0; while k<2 do begin For i:=1 to lenn do if (ss[i]=ss[i+1]) then begin s1:=''; for j:=1 to i do s1:=s1+ss[j]; s1:=s1+'µ'; for j:=i+1 to lenn do s1:=s1+ss[j]; ss:=s1; lenn:=Length(ss); end; inc(k); Result:=ss; end; end;
procedure TForm1.Button3Click(Sender: TObject); var s,t:string; k, i, j, len, x1, y1, x2, y2, c:integer; begin
t:=memo1.Text; len:=Length(t); if len>1 then begin s:=prob(t,len);
len:=Length(s); if (len mod 2)=1 then s:=s+' ';
for i:=1 to len do if (i mod 2 = 1) then begin for j:=0 to colk-1 do for c:=0 to rowk-1 do begin if s[i]=a[j,c] then begin x1:=j; y1:=c;
end; if s[i+1]=a[j,c] then begin x2:=j; y2:=c; end; end; if (x1=x2) then begin if y1=rowk-1 then s[i]:=a[x1,0] else s[i]:=a[x1,y1+1]; if y2=rowk-1 then s[i+1]:=a[x1,0] else s[i+1]:=a[x1, y2+1]; end; if (y1=y2) then begin if x1=colk-1 then s[i]:=a[0,y1] else s[i]:=a[x1+1,y2]; if x2=colk-1 then s[i+1]:=a[0,y1] else s[i+1]:=a[x2+1,y2]; end; if (y1<>y2) and (x1<>x2) then begin s[i]:=a[x1,y2]; s[i+1]:=a[x2,y1]; end; end; memo2.text:=s; button4.Enabled:=true; button5.Enabled:=true; statusbar1.Panels[0].Text:='Текст зашифрован'; form1.Decrypt1.Enabled:=true; form1.Save1.Enabled:=true; end else begin MessageDlg('Введите больше символов!', mtInformation, [mbOk], 0); memo1.SetFocus; statusbar1.Panels[0].Text:='Ошибка ввода откр.текста'; end;
end;
procedure TForm1.Button4Click(Sender: TObject); var s,s1:string; k, i, j, len, x1, y1, x2, y2, c:integer; begin s:=memo2.Text; len:=Length(s); for i:=1 to len do if (i mod 2 = 1) then begin for j:=0 to colk-1 do for c:=0 to rowk-1 do begin if s[i]=a[j,c] then begin x1:=j; y1:=c; end; if s[i+1]=a[j, c] then begin x2:=j; y2:=c; end; end; if (x1=x2) then begin if y1=0 then s[i]:=a[x1,rowk-1] else s[i]:=a[x1,y1-1]; if y2=0 then s[i+1]:=a[x1,rowk-1] else s[i+1]:=a[x1,y2-1]; end; if (y1=y2) then begin if x1=0 then s[i]:=a[colk-1,y1] else s[i]:=a[x1-1,y2]; if x2=0 then s[i+1]:=a[colk-1,y1] else s[i+1]:=a[x2-1,y2]; end; if (y1<>y2) and (x1<>x2) then begin s[i]:=a[x1,y2]; s[i+1]:=a[x2,y1]; end;
end; len:=Length(s); For i:=1 to len do begin if (s[i]='µ') then begin s1:=''; for j:=1 to i-1 do s1:=s1+s[j];
for j:=i+1 to len do s1:=s1+s[j]; s:=s1; end; end; len:=Length(s); memo3.text:=s; button6.Enabled:=true; statusbar1.Panels[0].Text:='Текст расшифрован'; form1.Savedecrypt1.Enabled:=true; end;
procedure TForm1.FormCreate(Sender: TObject); begin statusbar1.Panels[0].Text:='Введите текст для шифрования'; Memo1.Clear; Memo2.Clear; Memo3.Clear; button3.Enabled:=false; button4.Enabled:=false; button5.Enabled:=false; button6.Enabled:=false; form1.Decrypt1.Enabled:=false; form1.Savedecrypt1.Enabled:=false; form1.Save1.Enabled:=false; form1.Button1.Click; end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Finalize(a); end;
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); var fv:integer; begin fv:=updown1.Position; if (fv=1) then begin form1.Width:=907; end; if (fv=0) then begin form1.Width:=466; end;
end;
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin statusbar1.Panels[2].Text:=inttostr(length(memo1.Text)); end;
procedure TForm1.Exit1Click(Sender: TObject); begin close; end;
procedure TForm1.Save1Click(Sender: TObject); begin if savedialog1.Execute then begin Memo2.Lines.SaveToFile(savedialog1.FileName); statusbar1.Panels[0].Text:='Зашифрованый текст сохранен'; end; end;
procedure TForm1.Savedecrypt1Click(Sender: TObject); begin if savedialog1.Execute then begin memo3.Lines.SaveToFile(savedialog1.FileName); statusbar1.Panels[0].Text:='Расшифрованый текст сохранен'; end; end;
procedure TForm1.Open1Click(Sender: TObject); begin if OpenDialog1.Execute then begin memo1.Lines.LoadFromFile(OpenDialog1.FileName); statusbar1.Panels[0].Text:='Текст загружен'; end; end;
procedure TForm1.Clear1Click(Sender: TObject); begin Button7.Click; end;
procedure TForm1.Crypt1Click(Sender: TObject); begin Button3.Click; end;
procedure TForm1.Decrypt1Click(Sender: TObject); begin Button4.Click; end;
procedure TForm1.About2Click(Sender: TObject); begin form2.showmodal; end;
end.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|