Автор работы: Пользователь скрыл имя, 12 Ноября 2009 в 18:50, Не определен
Курсовая работа по дисциплине «Программно-аппаратная защита информации»
Курский
Государственный
Университет
Кафедра
программного обеспечения
и администрирования
информационных систем
КУРСОВАЯ
РАБОТА
по
дисциплине «Программно-аппаратная
защита информации»
Тема:
Гибридная система
шифрования (ГСШ-11)
Выполнила:
студент
гр. 52
Принял:
д.т.н.,
профессор
Курск 2009
СОДЕРЖАНИЕ
1. ЗАДАНИЕ НА
ПРОЕКТИРОВАНИЕ
Разработать прикладное программное обеспечение, реализующее гибридную систему шифрования символьной информации в соответствии с заданным вариантом курсовой работы.
При
выполнении курсовой работы использовать
представленную ниже структуру гибридной
системы шифрования (ГСШ):
В
приведенных структурах используются
следующие обозначния:
V – шифрование методом полиалфавитной замены;
S – шифрование методом скремблирования;
T – исходный текст;
F1 - промежуточный шифртекст;
F
- результирующий шифртекст.
Формализация
исходных данных методов шифрования:
k | conf | C0 | n |
8 | 1362 | 834 | 14 |
2.
ЛИСТИНГ ПРОГРАММЫ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, ExtCtrls, Grids, Math, Buttons;
type
TForm1 = class(TForm)
GroupBox2: TGroupBox;
Memo1: TMemo;
GroupBox1: TGroupBox;
Button1: TButton;
Button4: TButton;
Button3: TButton;
Memo2: TMemo;
Button2: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
GroupBox4: TGroupBox;
Memo3: TMemo;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Button5: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Button10: TButton;
Button11: TButton;
Button6: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
LabeledEdit1: TLabeledEdit;
BitBtn4: TBitBtn;
Button12: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Matrix;
procedure FormCreate(Sender: TObject);
procedure Zashifr;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
Procedure Rashifr;
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure SymvToBit(cq:char);
function CodeToSymv: integer;
procedure Posl;
procedure NachC(var j,k:longint;n:Byte);
procedure Button8Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
alf,s: String;
M:array of String;
Z,key,C,T: array of byte;
p:longint;
FName:String;
F:TextFile;
NText:TMemo;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject); //1z
Var Ch:Char;
begin
memo1.Text:='';
memo2.Text:='';
memo3.Text:='';
If OpenDialog1.Execute then
Begin
AssignFile(F,OpenDialog1.
FName:=OpenDialog1.FileName;
Reset(F);
If IOResult=0 then Begin
While not Eof(f) do
Begin
Read(F,Ch);
Memo1.Text:=Memo1.Text+Ch;
End;
CloseFile(F);
End;
End;
end;
procedure TForm1.Button5Click(Sender: TObject); //1s
begin
FName:='Скремблер';
SaveDialog1.FileName:=Fname;
If SaveDialog1.Execute then Fname:=SaveDialog1.FileName;
Memo1.Lines.SaveToFile(FName);
end;
procedure TForm1.Matrix; //Матрица V
Var i,k:word;
Begin
Setlength(M,length(s)+1);
M[0]:=alf;
For i:=1 to Length(s) do
Begin
k:=pos(s[i],alf);
M[i]:=Copy(alf,k,length(alf)-
End;
End;
Procedure TForm1.Zashifr;//Процедура шифрования
Var k,j,l:wORD;
i:longword;
Begin
Matrix;
Memo3.Text:='';
i:=1;
k:=1;
While i<Length(Memo1.Text)+1 do
Begin
If k=Length(s)+1 then Begin
k:=1;
End;
j:=1;
While M[j][1]<>s[k] do
j:=j+1;
l:=pos(Memo1.Text[i],M[0]);
Memo3.Text:=Memo3.Text+M[j][l]
k:=k+1;
i:=i+1;
End;
End;
Procedure TForm1.Rashifr;//Процедура дешифрования
Var k,j,l:wORD;
i:longword;
Begin
Matrix;
Memo2.Text:='';
i:=1;
k:=1;
While i<Length(Memo1.Text)+1 do
Begin
If k=Length(s)+1 then Begin
k:=1;
End;
j:=1;
While M[j][1]<>s[k] do
j:=j+1;
l:=pos(Memo1.Text[i],M[j]);
Memo2.Text:=Memo2.Text+M[0][l]
k:=k+1;
i:=i+1;
End;
End;
//Дешифрование V
procedure TForm1.Button4Click(Sender: TObject);
begin
Button12.Visible:=True;
LabeledEdit1.Visible:=True;
end;
//Шифрование V
procedure TForm1.Button1Click(Sender: TObject);
Var u:Integer;
begin
LabeledEdit1.Visible:=True;
BitBtn4.Visible:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
Memo1.Text:='';
Button12.Visible:=False;
LabeledEdit1.Visible:=False;
BitBtn4.Visible:=False;
For i:=0 to 255 Do
alf:=alf+char(i);
end;
Procedure TForm1.NachC(var
j,k:longint;n:Byte);//Формир-
Var i:Byte;
Begin
SetLength(Z,n);
SetLength(key,n);
For i:=n-1 downto 0 do
Begin
If j>1 then Begin
Z[i]:=j mod 2;