Реферат

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

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.6.2025





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

Кафедра программного обеспечения и администрирования информационных систем
КУРСОВАЯ РАБОТА

по дисциплине «Программно-аппаратная защита информации»
Тема: Гибридная система шифрования (ГСШ-11)

Выполнила:

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

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

 
Курск 2009



СОДЕРЖАНИЕ



1. ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ.. 3
2. ЛИСТИНГ ПРОГРАММЫ... 4
3. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ГСШ-11. 15


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




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

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




В приведенных структурах используются следующие обозначния:
V – шифрование методом полиалфавитной замены;

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

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

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

F -  результирующий шифртекст.
Формализация исходных данных методов шифрования:
·        Исходные данные метода V определяются длиной ключа K.

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

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

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

3.     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):



1. Курсовая Современный государственный строй Японии
2. Реферат на тему Maya Angelolu Essay Research Paper In Maya
3. Реферат Имидж телеведущего на рейтинг программы
4. Курсовая Исследование системы передачи дискретных сообщений
5. Реферат на тему Брюшной тиф патогенез патологическая анатомия осложнения и диагноз
6. Реферат Проведение деловых переговоров в конфликтной ситуации
7. Статья Виды контроля за детьми с отклонениями в состоянии здоровья
8. Контрольная работа Разработка приспособления для фрезерования
9. Реферат на тему Периодический закон и периодическая система химических элементов Д И Менделеева на основе представлений
10. Курсовая Методы влияния и воздействия