Высокоуровневые методы информатики и программирования

СОДЕРЖАНИЕ: Целью курсовой работу является реализация криптографического алгоритма шифрования и дешифрования с использованием шифра Виженера.

, , , . , « », , .

, , , . . : , , .

- , « » ( , - ) - . , . . - . , . . XVI . XVI . , , XIX .

I . , . Enigma, 1917 . .

.

1.

, , .

. , x1 , x2 , x3 , ….. xn , …… x2n , ….., . (, n ). , - , - ….. n- - n-, n+1 , . , - , , . , , , .

2.

(. Chiffre de Vigenre) - .

. . (. Giovan Battista Bellaso) La cifra del. Sig. Giovan Battista Bellaso 1553 , , XIX , . , .

.1

#justify.2

#justifyATTACKATDAWN

, , («LEMON») , :

A L, . L L A . ; X E T.

.

:ATTACKATDAWN

:LEMONLEMONLE

: LXFOPVEFRNHR

: , ; . , , . .

A-Z 0-25, :

:

, , DANCE. , . «» ABC, « » , « » :

, , , , , - :

DBPCF. , , . ( «» ), , : , :

.3

«» , . , . :

1. . . , 2- , 3- . . (, ), .

2.. l- ( l - ), .

.

.3.1

1863 , , #justify:ABCDEF AB CDEFA BCD EFABCDEFABCD

:CRYPTO IS SHORT FOR CRYPTOGRAPHY

: CSASXT IT UKSWT GQU GWYQVRKWAQJB

, . , :

:ABCDAB CD ABCDA BCD ABCDABCDABCD :CRYPTO IS SHORT FOR CRYPTOGRAPHY :CSASTP KV SIQUT GQU CSASTPIUAQJB

, . , :

:

DYDUXRMH 18, , : 18, 9, 6, 3 2. NQD 20. , 20 10, 5, 4 2. , , ( ) 2.

.3.2

( -) 1920 . #justify

:

- (26 ), - , - . , , . .

.4

, , . , ; - , . , , . , , . , , . , , , .

.5

running key (. - ) - . , . , ( ). 1920 . running key , (, ) . , , , .

- #justify.6

, , , , «», , , «».

:

«»

«». «». «».

3.

, , . , , , ( - ). , , , , , . , 1836 . , , , . , .

, . Delphi ().

, .

, , , , , .

1... , .. , .. , .. . . - : , 2006

2.David, Kahn. On the Origin of a Species. The Codebreakers: The Story of Secret Writing. Simon Schuster, 1999

3.Henk C.A. van Tilborg, ed. Encyclopedia of Cryptography and Security (First ed.). Springer. pp. 115, 2005

4.. . . . - : , 2007

.. . , . . , . . , . . . . - : , 2005

unit TablVin;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, , Grids, ComCtrls, ExtCtrls, StdCtrls, Buttons, Menus, hlp;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TStringGrid;: TPanel;: TSpeedButton;: TSpeedButton;: TStringGrid;: TPopupMenu;: TMenuItem;: TEdit;: TLabel;: TMemo;: TMemo;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TStatusBar;: TOpenDialog;: TSaveDialog;: TSpeedButton;: TMainMenu;: TMenuItem;: TMenuItem;: TTimer;: TSpeedButton;: TSpeedButton;: TLabel;: TLabel;: TLabel;: TButton;: TButton;: TMenuItem;: TLabel;: TButton;: TButton;FormCreate(Sender: TObject);N1Click(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);Edit1KeyPress(Sender: TObject; var Key: Char);REd1KeyPress(Sender: TObject; var Key: Char);SG2KeyPress(Sender: TObject; var Key: Char);SB1Click(Sender: TObject);SB2Click(Sender: TObject);REd2KeyPress(Sender: TObject; var Key: Char);SB7Click(Sender: TObject);SB3Click(Sender: TObject);SB5Click(Sender: TObject);N3Click(Sender: TObject);SB4Click(Sender: TObject);SB6Click(Sender: TObject);LokBut(Sender: TObject);SpeedButton1Click(Sender: TObject);SpeedButton2Click(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);N4Click(Sender: TObject);Button3Click(Sender: TObject);Button4Click(Sender: TObject);

{ Private declarations }

{ Public declarations };= [a..z, 0..9];Rez :TStrings; Old1, Old2 :String;:Set of Char; // : TForm1;Det0(Tb :TStringGrid):Boolean;Invert(S :String; N :LongInt):String;KeyR(Tb :TStringGrid; Zn :Char; N :Integer=0):Integer;KeyS(Tb :TStringGrid; Zn :Char; N :Integer=0):Integer;Znak(Tb :TStringGrid; C, R :LongInt):Char;

{$R *.dfm}TForm1.FormCreate(Sender: TObject);ColL :LongInt; Lst :TStrings;:= [];:= 0; // :=TStringList.Create;.Clear;FileExists( ExtractFilePath(ParamStr(0))+Grid.cfg ) Then.LoadFromFile( ExtractFilePath(ParamStr(0))+Grid.cfg );:= Lst.Count;.RowCount := ColL;.Free;;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.Visible:=False;.ActivePage:=TabSheet2;FileExists(ExtractFilePath(ParamStr(0))+Grid.cfg) Then.Cols[0].LoadFromFile(ExtractFilePath(ParamStr(0))+Grid.cfg);

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.ColCount := ColL;.RowCount := Sg1.ColCount;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.Click;(REd1.Lines.Count0)OR(REd2.Lines.Count0)Then SB7.Enabled:=True ELSE.Enabled:=False;;Det0(Tb :TStringGrid):Boolean;

VAR R :LongInt; //

Det0:=True;R:=0 To Tb.RowCount-1 DoTb.Cells[0, R]= Then:=True;(!); Break;ELSE Det0:=False;;TForm1.N1Click(Sender: TObject);R, I :LongInt; Ms, Sd :String;Det0(SG2) Then Exit;

//=============================================== := [];I:=0 To Sg2.RowCount - 1 Do:= Cont + [ Znak(Sg2, 0, I) ];;

//===============================================.Enabled:=False;:=;I:=0 To Sg2.RowCount-1 Do:=MS+SG2.Cells[0, I];R:=0 To SG1.RowCount-1 Do.Rows[R].Clear;:=Invert(MS, R);I:=1 to Length(Sd) Do.Rows[R].Add( Sd[I] );;.Enabled:=True;;TForm1.FormClose(Sender: TObject; var Action: TCloseAction);Det0( Sg2 ) = False Then.Cols[0].SaveToFile(ExtractFilePath(ParamStr(0))+Grid.cfg);;Invert(S :String; N :LongInt):String;S1, S2, Sum :String;(S=)OR(NLength(S))Then Exit;

///////////////////////////N0 Then:=; S2:=;:=Copy(S, 1, N);:=Copy(S, N+1, Length(S)-N);:=S2+S1;:=Sum;ELSEN=0 Then:=S;;(!); Exit;;;TForm1.Button1Click(Sender: TObject);.showmodal;;TForm1.Button2Click(Sender: TObject);.Visible:=Not SG1.Visible;;TForm1.Button3Click(Sender: TObject);.ActivePage:=TabSheet1;;TForm1.Button4Click(Sender: TObject);.ActivePage:=TabSheet2;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);Key OF

.., #8, #9: ;

.., a..z: Key:=Chr(Ord(Key)-32);

, : Key:=;

// ELSE Key:=#0;;Not (Key in Cont) Then Key:=#0;;TForm1.REd1KeyPress(Sender: TObject; var Key: Char);Key OF

.., #8, #9, #13, #10, : ;

.., a..z: Key:=Chr(Ord(Key)-32);

, : Key:=;

0..9: ;;;TForm1.REd2KeyPress(Sender: TObject; var Key: Char);Key OF

.., #8, #9, #13, #10, : ;

.., a..z: Key:=Chr(Ord(Key)-32);

, : Key:=;

0..9: ;

// ELSE Key:=#0;;;TForm1.SG2KeyPress(Sender: TObject; var Key: Char);Key OF

.., #8, #9, #13, #10, : ;

.., a..z: Key:=Chr(Ord(Key)-32);

, : Key:=;

0..9: ;

// ELSE Key:=#0;;;KeyR(Tb :TStringGrid; Zn :Char; N :Integer=0):Integer;

Var R :LongInt; // : // 1-

Result:=0;R:=0 To Tb.RowCount-1 Do.ProcessMessages();Tb.Cells[N, R]=Zn Then Begin Result:=R; Break; End;;;KeyS(Tb :TStringGrid; Zn :Char; N :Integer=0):Integer;

Var C :LongInt; // : // :=0;

For C:=0 To Tb.ColCount-1 Do.ProcessMessages();Tb.Cells[C, N]=Zn Then Begin Result:=C; Break; End;;;Znak(Tb :TStringGrid; C, R :LongInt):Char;//:=Tb.Cells[C, R][1];;TForm1.SB1Click(Sender: TObject);I, J, K :LongInt; Key, Txt, Oyt :String; Ch :Char; A, B :Longint;// Edit1.Text= Then Exit;.Enabled:=False;.Enabled:=False;.Enabled:=False;.Enabled:=False;.Enabled:=False;.Enabled:=False;:=Edit1.Text;:=1;.Lines.Clear; //K:=0 To REd1.Lines.Count-1 DoOyt:=;:=REd1.Lines.Strings[ K ]; //I:=1 To Length(Txt{REd1.Lines.Text})Do.ProcessMessages(); //

///////////////////////////////{REd1.Lines.Text[I]}Txt[I] in Cont{[.., ]} Then:=Key[J];:=KeyR(SG1, Ch, 0) ; // :=Txt[I]; //REd1.text[I];

B:=KeyS(SG1, Ch, 0) ; //

//REd2.Text:=REd2.Text+Znak(SG1, B, A);:=Oyt+Znak(SG1, B, A);J=Length(Key)-1 Then J:=J+1 ELSE J:=1; //ELSE//:=Txt[ I ];

//REd2.Text:=REd2.Text+Ch;:=Oyt+Ch;;

///////////////////////////////;.Lines.Add(Oyt);;.Enabled:=True;.Enabled:=True;.Enabled:=True;.Enabled:=True;.Enabled:=True;.Enabled:=True;;TForm1.SB2Click(Sender: TObject);I, J, K :LongInt; Key, Txt, Oyt :String; Ch :Char; A, B :Longint;// Edit1.Text= Then Exit;.Enabled:=False;.Enabled:=False;.Enabled:=False;.Enabled:=False;.Enabled:=False;.Clear; //:=Edit1.Text;:=1;K:=0 To REd2.Lines.Count-1 DoOyt:=;:=REd2.Lines.Strings[K];.ProcessMessages(); //I:=1 To Length( Txt ) DO.ProcessMessages();

//////////////////////////////Txt[I] IN Cont{[.., ]} Then:=Key[J];:=KeyR(SG1, Ch, 0) ; // :=Txt[I]; //REd2.text[I];

B:=KeyS(SG1, Ch, A) ; // Main

//REd1.Text:=REd1.Text+Znak(SG1, B, 0);:=Oyt+Znak(SG1, B, 0);J=Length(Key)-1 Then J:=J+1 ELSE J:=1; //ELSE:=Txt[ I ];

//REd1.Text:=REd1.Text+Ch;:=Oyt+Ch;;

//////////////////////////////;.Lines.Add(Oyt);;.Enabled:=True;.Enabled:=True;.Enabled:=True;.Enabled:=True;.Enabled:=True;.Enabled:=True;;TForm1.SB7Click(Sender: TObject);// REd1.Lines.Count0 Then REd1.Clear;REd2.Lines.Count0 Then REd2.Clear;.Enabled:=False; SB1.Enabled:=False;.Enabled:=False; SB4.Enabled:=False;.Enabled:=False;.Panels[0].Text:=;.Panels[1].Text:=;;TForm1.SB3Click(Sender: TObject);

begin.Title:= ...;

IF OD1.Execute Then.Panels[0].Text:=ExtractFileName( OD1.FileName );:=OD1.FileName;.ProcessMessages(); //.FileName:=Old1;.Lines.LoadFromFile( Old1 );; ShowMessage(: +Old1);.Panels[0].Text:=; SD1.FileName:=;;.FileName:=;;;TForm1.SB5Click(Sender: TObject);

begin.Title:= ...;

IF OD1.Execute Then.Panels[1].Text:=ExtractFileName( OD1.FileName );:=OD1.FileName;.ProcessMessages(); //.Lines.LoadFromFile( Old2 );; ShowMessage(: +Old2);.Panels[1].Text:=;;.FileName:=;;;TForm1.N3Click(Sender: TObject);.Visible:=Not SG1.Visible;;TForm1.N4Click(Sender: TObject);

begin( . 313 : 2012);

end;TForm1.SB4Click(Sender: TObject);

Label 0;.Title:= ...;

IF SBar1.Panels[0].Text= Then

: IF SD1.Execute Then:=SD1.FileName;.ProcessMessages();.Lines.SaveToFile( Old1 );.Panels[0].Text:=ExtractFileName( Old1 );;ELSEMessageBox(Handle, PChar( +

#13++Old1++

#13 . ), , _YESNO+MB_ICONINFORMATION)=MrYes Then.Lines.SaveToFile(Old1) ELSE GoTo 0;

//SBar1.Panels[0].Text.FileName:=;;TForm1.SB6Click(Sender: TObject);

Label 1;.Title:= ...;

IF SBar1.Panels[1].Text= Then

: IF SD1.Execute Then:=SD1.FileName;.ProcessMessages();.Lines.SaveToFile( Old2 );.Panels[1].Text:=ExtractFileName( Old2 );;ELSEMessageBox(Handle, PChar( +

#13++Old2++

#13 . ), , _YESNO+MB_ICONINFORMATION)=MrYes Then.Lines.SaveToFile( Old2 ) ELSE GoTo 1;

//SBar1.Panels[0].Text.FileName:=;;TForm1.LokBut(Sender: TObject);// REd1.Lines.Count0 Then.Enabled:=True;.Enabled:=True;ELSEREd1.Lines.Count=0 Then.Enabled:=False;.Enabled:=False;;REd2.Lines.Count0 Then.Enabled:=True;.Enabled:=True;ELSEREd2.Lines.Count=0 Then.Enabled:=False;.Enabled:=False;;(REd1.Lines.Count0)OR(REd2.Lines.Count0)Then SB7.Enabled:=True ELSE.Enabled:=False;.Caption:=Format(- [R=%d, C=%d],

[SG1.RowCount, SG1.ColCount]);

// STRINGGRID DelCol(SG: TStringGrid);I, J :LongInt;// SG do:= ColCount - 1;[ J ].Clear;I:=J to ColCount - 2 do[ I ].Assign( Cols[ I+1 ] );:= ColCount - 1;;;DelRow(SG: TStringGrid);I, J :LongInt;// SG do:= RowCount - 1; // [ J ].Clear;I:=J to RowCount - 2 do[I].Assign( Rows[ I+1 ] );:= RowCount - 1;;;InsRow(SG: TStringGrid);// SG do:= RowCount + 1;;InsCol(StrGrid: TStringGrid);// .ColCount := StrGrid.ColCount + 1;;TForm1.SpeedButton1Click(Sender: TObject);

begin // SG2.RowCount256 Then

begin( Sg2 );( Sg1 );( SG1 );ELSE Beep;;TForm1.SpeedButton2Click(Sender: TObject);

begin // Sg2.RowCount33 Then

Begin( Sg2 );( Sg1 );( SG1 );ELSE Beep;

end;.

(tabula recta)

ABCDEFGHIJKLM NO PQR STU VW XYZAABCDEFGHIJKLM NO PQR STU VW XYZBBCDEFGHIJKLM N O PQRSTUV W X YZACCDE FGHIJKLM NO PQR STU VW XY ZABDDEFGHIJKLM N O PQRSTUV W X YZABCEEFGHIJKLM NO PQR STUVW XY ZABCDFFGH IJKLM N O PQRSTUVW X YZABCDEGGHI JKLM N O PQRSTU VW XY ZABCDEFHHIJKLM N O PQRSTUV W X YZABCDEFGIIJKLM NO PQR STUVW XYZABCDEFGHJJKLM NO PQRSTUVW XYZABCDEFGHIKKLM N O PQRSTU VW XYZABCDEFGHIJLLM NO PQRSTUV W X YZABCDEFGHIJKMM N O PQRSTU V W X Y ZABCDEFGHIJKLNN O PQRSTU V W X YZABCDEFGHIJKLMOO PQRSTU V W XY ZABCDEFGHIJKLM NPPQR STUV W X YZABCDE FGHIJKLM N OQQRSTU V W X Y ZABCDEFGHIJKLM NO PRRSTU V W X Y ZABCDE FGHIJKLM N O PQSSTUV W XY ZABCDEFGH I JKLM NO PQRTTU VW X YZABCDEFGHI JKLM N O PQRSUU V W X Y ZABCDEFGH I JKLM NO PQRSTVV W XY ZABCDE FGHI JKLM N O PQRSTUWW X YZABCDEFGHIJKLM N O PQRSTU VXX Y ZABCDEFGHIJKLM N O PQRSTUV WYY ZABCDEFGH IJKLM NO PQRSTUVW XZZABCDEFGHI JKLM N O PQRSTUVW X Y

Скачать архив с текстом документа