Шифры сложной замены. Двойной квадрат Уитстона (Лабораторная работа № 3)

Страницы работы

Фрагмент текста работы

Министерство образования и науки Украины

Сумской государственный университет

Кафедра информатики

Лабораторная работа №3

по дисциплине "Криптология"

на тему

" Шифры сложной замены. Двойной квадрат Уитстона "

                                                                                             Выполнила

       студентка ММФ

группы  ИН-51

Ковалёва Ирина

                                                                                                       Проверил

                                                   преподаватель

                                                                                         Дунь А.В.

Сумы

2008

Постановка задачи

1.  Ознакомиться с теоретическими сведениями о шифре "Двойной квадрат Уитстона"

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

3.  Протестировать работу программы.

4.  Оформить отчёт.

Информационная часть работы

В 1854 г. англичанин Чарльз Уитстон разработал новый метод шифрования биграммами, который называют "двойным квадратом".

Пусть имеются две таблицы со случайно расположенными в них русскими алфавитами (рис.1). Перед шифрованием исходное сообщение разбивают на биграммы. Каждая биграмма шифруется отдельно. Первую букву биграммы находят в левой таблице, а вторую букву - в правой таблице. Затем мысленно строят прямоугольник так, чтобы буквы биграммы лежали в его противоположных вершинах. Другие две вершины этого прямоугольника дают буквы биграммы шифртекста.

image

Рисунок 1 - Две таблицы со случайно расположенными символами русского алфавита для шифра "двойной квадрат"

Предположим, что шифруется биграмма исходного текста ИЛ. Буква И находится в столбце 1 и строке 2 левой таблицы. Буква Л находится в столбце 5 и строке 4 правой таблицы. Это означает, что прямоугольник образован строками 2 и 4, а также столбцами 1 левой таблицы и 5 правой таблицы. Следовательно, в биграмму шифртекста входят буква О, расположенная в столбце 5 и строке 2 правой таблицы, и буква В, расположенная в столбце 1 и строке 4 левой таблицы, т.е. получаем биграмму шифртекста ОВ.

Если обе буквы биграммы сообщения лежат в одной строке, то и буквы шифртекста берут из этой же строки. Первую букву биграммы шифртекста берут из левой таблицы в столбце, соответствующем второй букве биграммы сообщения. Вторая же буква биграммы шифртекста берется из правой таблицы в столбце, соответствующем первой букве биграммы сообщения. Поэтому биграмма сообщения ТО превращается в биграмму шифртекста БЖ. Аналогичным образом шифруются все биграммы сообщения:

Сообщение ПР ИЛ ЕТ АЮ  Ш ЕС ТО ГО

Шифртекст ПЕ ОВ ЩН ФМ ЕШ РФ БЖ ДЦ

Дешифрование происходит аналогично шифрованию, только таблицы, применяющиеся при шифровании, меняются  местами

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

Листингпрограммы


unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, StdCtrls, jpeg, ExtCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    StringGrid1: TStringGrid;

    StringGrid2: TStringGrid;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Label8: TLabel;

    Label11: TLabel;

    Label12: TLabel;

    Label13: TLabel;

    Memo1: TMemo;

    Memo2: TMemo;

    Memo3: TMemo;

    Memo4: TMemo;

    Memo5: TMemo;

    Memo6: TMemo;

    Memo7: TMemo;

    Button4: TButton;

    Button5: TButton;

    Image1: TImage;

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

     private

    { Private declarations }

  public

    { Public declarations }

  end;

const

    n=6;

type

  Matr=array[0..n-1,0..n-1] of char;

const

    alfavit:Matr= (('A','B','C','D','E','F'),('G','H','I','J','K','L'),('M','N','O','P','Q','R'),  ('S','T','U','V','W','X'),('Y','Z','0','2','4','6'),('8','<','>','+','-','*'));

var

  Form1: TForm1;

  kvadrat1,kvadrat2:Matr;

  text1, shifr,bigramaSh,bigramaTxt,outtext,bigramaout:string;

implementation

{$R *.dfm}

//********процедура заполнения квадрата*******

procedure Sort(a:Matr; var b: Matr);

var

    i,j,i1,j1,i2,j2,k:integer;

    q:char;

begin

Randomize;

for i:=0 to n-1 do

  for j:=0 to n-1 do

    b[i][j]:=a[i][j];

for k:=1 to 100 do

    begin

      i1:=random(6);

      j1:=random(6);

      i2:=random(6);

      j2:=random(6);

      q:=b[i1][j1];

      b[i1][j1]:=b[i2][j2];

      b[i2][j2]:=q;

Похожие материалы

Информация о работе

Предмет:
Криптология
Тип:
Отчеты по лабораторным работам
Размер файла:
107 Kb
Скачали:
0