Реферат по предмету "Информатика"


Гибридная система шифрования ГСШ-11

Курский Государственный Университет


Кафедра программного обеспечения и администрирования информационных систем


КУРСОВАЯ РАБОТА


по дисциплине «Программно-аппаратная защита информации»


Тема: Гибридная система шифрования (ГСШ-11)


Выполнила:

студент гр. 52 Ковалёв К.Н.


Принял:

д.т.н., профессор Лопин В.Н.


Курск 2009

СОДЕРЖАНИЕ



1. ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ


Разработать прикладное программное обеспечение, реализующее гибридную систему шифрования символьной информации в соответствии с заданным вариантом курсовой работы.

При выполнении курсовой работы использовать представленную ниже структуру гибридной системы шифрования (ГСШ):




В приведенных структурах используются следующие обозначния:


V – шифрование методом полиалфавитной замены;

S – шифрование методом скремблирования;

T – исходный текст;

F1 - промежуточный шифртекст;

F - результирующий шифртекст.


Формализация исходных данных методов шифрования:


Исходные данные метода V определяются длиной ключа K.

Исходные данные метода S определяются тройкой (conf, C0, n), где:

conf – конфигурация генератора псевдослучайных чисел, определяющая расположение сумматоров по модулю два в обратной связи генератора:

C0 – начальное состояние генератора;

n – количество двоичных разрядов генератора.


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.FileName);

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)-k+1)+copy(alf,1,k-1);

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;

j:=j div 2;

End

Else if j=1 then

Begin

Z[i]:=1;

j:=0;

End

Else Z[i]:=0;

If k>1 then Begin

key[i]:=k mod 2;

k:=k div 2;

End

Else if k=1 then

Begin

key[i]:=1;

k:=0;

End

Else key[i]:=0;

End;

End;


Procedure TForm1.Posl;//Формирование псевдослуч. посл-ти

Var Q: array of byte;

k:Byte;

j,i:Integer;

Begin

Setlength(Q,Length(Z));

Setlength(C,Trunc(IntPower(2,Length(Z))));

For j:=0 to Length(Z)-1 do

Q[j]:=key[j];

j:=0;

While j<Trunc(IntPower(2,Length(Z))) do

Begin

i:=High(Z);

p:=Q[i];

While i>0 do

Begin

If Z[i-1]=1 then p:=p xor q[i-1];

i:=i-1;

End;

C[j]:=Q[High(Q)];

For k:=High(Q) downto 1 do

Q[k]:=Q[k-1];

Q[0]:=p;

p:=0;

For k:=0 to High(Q) do

If Q[k]=key[k] then p:=p+1;

If p=Length(Q) then Begin

p:=j;

j:=Trunc(IntPower(2,Length(Z)));

End

else j:=j+1;

End;

Label2.Caption:='Длина последовательности='+IntToStr(p);

End;


Procedure TForm1.SymvToBit(cq:char);//Преобразования символа в бит.посл-ть

Var k,j:Byte;

Begin

j:=ord(cq);//символ переводится в его порядковый № в таблице символов

For k:=7 downto 0 do

Begin

If j>1 then Begin

T[k]:=j mod 2;

j:=j div 2;

End

Else if j=1 then

Begin

T[k]:=1;

j:=0;

End

Else T[k]:=0;

End;

End;


Function TForm1.CodeToSymv: integer; //Преобразование кода в символ

Var k:Byte;

Z,i:Integer;

Begin

Z:=0;

For k:=0 to 7 do

Z:=Z+T[k]*Trunc(IntPower(2,7-k));

CodeToSymv:=Z;

End;


procedure TForm1.Button7Click(Sender: TObject); //2z

Var Ch:Char;

begin

memo2.Text:='';

memo3.Text:='';

If OpenDialog1.Execute then

Begin

AssignFile(F,OpenDialog1.FileName);

FName:=OpenDialog1.FileName;

Reset(F);

If IOResult=0 then Begin

While not Eof(f) do

Begin

Read(F,Ch);

Memo2.Text:=Memo2.Text+Ch;

End;

CloseFile(F);

End;

End;

end;


procedure TForm1.Button8Click(Sender: TObject); //Шифрование S

Var conf,c0:LongInt;

n:Byte;

k:Longword;

j,l:Word;

i:byte;

begin

conf:=1362;

c0:=834;

n:=14;

NachC(conf,c0,n);

Posl;

Setlength(T,8);

j:=0;

Memo1.Text:='';

For k:=1 to Length(Memo2.Text) do

Begin

SymvToBit(Memo2.Text[k]);

If j<p-1 then For l:=0 to 7 do

Begin

T[l]:=C[j] xor T[l];

j:=j+1;

End

Else

Begin

T[l]:=C[j] xor T[l];

j:=0;

End;

Memo1.Text:=Memo1.Text+char(CodeToSymv);

End;

end;


procedure TForm1.Button2Click(Sender: TObject); //2s

begin

FName:='Полиалфиват';

SaveDialog1.FileName:=Fname;

If SaveDialog1.Execute then Fname:=SaveDialog1.FileName;

Memo2.Lines.SaveToFile(FName);

End;


procedure TForm1.Button6Click(Sender: TObject); //3s

begin

FName:='шифр-текст';

SaveDialog1.FileName:=Fname;

If SaveDialog1.Execute then Fname:=SaveDialog1.FileName;

Memo3.Lines.SaveToFile(FName);

end;


procedure TForm1.Button9Click(Sender: TObject); //Дешифрование S

Var conf,c0:LongInt;

n:Byte;

k:Longword;

j,l:Word;

i:byte;

begin

conf:=1362;

c0:=834;

n:=14;

NachC(conf,c0,n);

Posl;

Setlength(T,8);

j:=0;

Memo3.Text:='';

For k:=1 to Length(Memo2.Text) do

Begin

SymvToBit(Memo2.Text[k]);

If j<p-1 then For l:=0 to 7 do

Begin

T[l]:=C[j] xor T[l];

j:=j+1;

End

Else

Begin

T[l]:=C[j] xor T[l];

j:=0;

End;

Memo3.Text:=Memo3.Text+char(CodeToSymv);

End;

end;


procedure TForm1.Button10Click(Sender: TObject);

begin

Memo1.Text:=Memo3.Text;

Memo2.Text:='';

Memo3.Text:='';

end;


procedure TForm1.Button11Click(Sender: TObject);//Новые параметры

begin

s:='';

Memo1.Text:='';

Memo2.Text:='';

Memo3.Text:='';

Label3.Visible:=False;

Label1.Visible:=False;

Button4.Visible:=False;

Button1.Visible:=False;

Button9.Visible:=False;

Button8.Visible:=False;


end;


procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Label3.Visible:=False;

Label1.Visible:=True;

Button4.Visible:=False;

Button1.Visible:=True ;

Button9.Visible:=False;

Button8.Visible:=True ;

end;


procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Label1.Visible:=False;

Label3.Visible:=True;

Button1.Visible:=False;

Button4.Visible:=True;

Button8.Visible:=False;

Button9.Visible:=True ;

end;


procedure TForm1.BitBtn3Click(Sender: TObject);

begin

close

end;


procedure TForm1.BitBtn4Click(Sender: TObject);

Var u:Integer;

begin

LabeledEdit1.Visible:=True;

u:=0;

s :=LabeledEdit1.Text;

while u=0 do

begin

if Length(s)<>8 then

begin

MessageDlg('Длина ключа должна равняться 8! ', mtWarning, [mbOK], 0);

s := InputBox('Метод полиалфавитной замены','Попробуйте еще раз','');

end

else u:=u+1;

end;

BitBtn4.Visible:=False;

LabeledEdit1.Visible:=False;

Zashifr;

end;


procedure TForm1.Button12Click(Sender: TObject);

Var u:Integer;

begin

u:=0;

s :=LabeledEdit1.Text;

while u=0 do

begin

if Length(s)<>8 then

begin

MessageDlg('Длина ключа должна равняться 8!', mtWarning, [mbOK], 0);

s := InputBox('Метод полиалфавитной замены','Попробуйте еще раз','');

end

else u:=u+1;

end;

LabeledEdit1.Visible:=False;

button12.Visible:=False;

Rashifr;


end;


end.


3. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ГСШ-11


Результат шифрования с использованием гибридной системы шифрования (ГСШ-11):

Результат расшифрования с использованием гибридной системы шифрования (ГСШ-11):



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Розвиток в учнів початкових класів умінь розв язувати складені задачі
Реферат А.К.Лядов
Реферат Пулитцер Джозеф
Реферат Процессуальная самостоятельность следователя при принятии решения (согласно законодательству Республики Казахстан)
Реферат Kind Of Student Essay Research Paper People
Реферат Николай Погодин
Реферат Климат Африки
Реферат Организационный инструментарий управления проектами (сетевые матрицы, матрица разделения административных задач управления, информационно-технологическая модель)
Реферат Маркетинг, Маркетинговые исследования рынка, стимулирование сбыта
Реферат Туристский продукт и его элементы
Реферат Поведение в конфликтах
Реферат Законы Чингизхана Великая Яса
Реферат Something To Sing About Essay Research Paper
Реферат Подвижные игры с бегом как средство развития быстроты и ловкости
Реферат Земля как особенный объект недвижимости