Добавил:
Vezen
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Реализация алгоритмов шифрования на Delphi / Вижинер / Unit1
.pas unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, XPMan, ComCtrls, ExtCtrls, AppEvnts, ActnList, Clipbrd;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
XPManifest1: TXPManifest;
SpeedButton4: TSpeedButton;
SpeedButton3: TSpeedButton;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2,Unit3;
var VizTabl: array [0..32,0..32] of byte;
cod,i,j,sym1,sym2,sym3,sym4:byte;
ish,keyword,shifr,deshifr,msg,KeyStr:string;
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in['а'..'я',#8]) then key:=#0;
Clipboard.Clear;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if Edit1.Text='' then
begin
ShowMessage('Введите сообщение для шифрования');
exit;
end;
if Edit2.Text='' then
begin
ShowMessage('Введите ключевое слово');
exit;
end;
msg:=Edit1.Text;
KeyStr:=Edit2.Text;
cod:=1;
keyword:='';
shifr:='';
for i:=1 to length(msg) do
begin
keyword:=keyword+keystr[cod];
inc(Cod);
if cod>length(keystr) then cod:=1;
end;
for i:=1 to length(msg) do
begin
sym1:=ord(msg[i])-224;
sym2:=ord(keyword[i])-224;
shifr:=shifr+chr(viztabl[sym2,sym1]);
Edit3.Text:=shifr;
end;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cod:=0;
for i:=0 to 31 do
begin
for j:=0 to 31 do
begin
VizTabl[j,i]:=cod+224;
inc(cod);
if cod=32 then cod:=0;
end;
inc(cod);
end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if Edit3.Text='' then
begin
ShowMessage('Введите сообщение для дешифрования');
exit;
end;
if Edit2.Text='' then
begin
ShowMessage('Введите ключевое слово');
exit;
end;
deshifr:='';
shifr:=Edit3.Text;
keystr:=Edit2.Text;
for i:=1 to length(msg) do
begin
keyword:=keyword+keystr[cod];
inc(Cod);
if cod>length(keystr) then cod:=1;
end;
for i:=1 to length(msg) do
begin
sym4:=ord(keyword[i])-224;
for j:=0 to 31 do
if VizTabl[sym4,j]=Ord(shifr[i]) then sym3:=j;
deshifr:=deshifr+chr(viztabl[0,sym3]);
Edit4.Text:=deshifr;
end;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Clipboard.Clear;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, XPMan, ComCtrls, ExtCtrls, AppEvnts, ActnList, Clipbrd;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
XPManifest1: TXPManifest;
SpeedButton4: TSpeedButton;
SpeedButton3: TSpeedButton;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2,Unit3;
var VizTabl: array [0..32,0..32] of byte;
cod,i,j,sym1,sym2,sym3,sym4:byte;
ish,keyword,shifr,deshifr,msg,KeyStr:string;
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in['а'..'я',#8]) then key:=#0;
Clipboard.Clear;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if Edit1.Text='' then
begin
ShowMessage('Введите сообщение для шифрования');
exit;
end;
if Edit2.Text='' then
begin
ShowMessage('Введите ключевое слово');
exit;
end;
msg:=Edit1.Text;
KeyStr:=Edit2.Text;
cod:=1;
keyword:='';
shifr:='';
for i:=1 to length(msg) do
begin
keyword:=keyword+keystr[cod];
inc(Cod);
if cod>length(keystr) then cod:=1;
end;
for i:=1 to length(msg) do
begin
sym1:=ord(msg[i])-224;
sym2:=ord(keyword[i])-224;
shifr:=shifr+chr(viztabl[sym2,sym1]);
Edit3.Text:=shifr;
end;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cod:=0;
for i:=0 to 31 do
begin
for j:=0 to 31 do
begin
VizTabl[j,i]:=cod+224;
inc(cod);
if cod=32 then cod:=0;
end;
inc(cod);
end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if Edit3.Text='' then
begin
ShowMessage('Введите сообщение для дешифрования');
exit;
end;
if Edit2.Text='' then
begin
ShowMessage('Введите ключевое слово');
exit;
end;
deshifr:='';
shifr:=Edit3.Text;
keystr:=Edit2.Text;
for i:=1 to length(msg) do
begin
keyword:=keyword+keystr[cod];
inc(Cod);
if cod>length(keystr) then cod:=1;
end;
for i:=1 to length(msg) do
begin
sym4:=ord(keyword[i])-224;
for j:=0 to 31 do
if VizTabl[sym4,j]=Ord(shifr[i]) then sym3:=j;
deshifr:=deshifr+chr(viztabl[0,sym3]);
Edit4.Text:=deshifr;
end;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Clipboard.Clear;
end;
end.
Соседние файлы в папке Вижинер