Шифры простой замены. Шифр Цезаря (Лабораторная работа № 1)

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

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

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

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

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

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

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

на тему

"Шифры простой замены. Шифр Цезаря"

Вариант №3

                                             Выполнила студентка

                                                   группы ИН-52    Мельник Е.А.

                                                   Проверил

                                                   преподаватель           Дунь А.В.

Сумы 2009

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

1. Ознакомиться с алгоритмом работы шифра Цезаря

2. Выполнить программную реализацию шифрования и дешифрование данных с шифра Цезаря, согласно своему варианту, а также криптоанализ шифра Цезаря.

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

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


Теоретический материал по теме практического задания

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

Математическая модель

Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами:

y=x+k\ (mod\ n)

x=y-k\ (mod\ n),

где ~x— символ открытого текста, ~y— символ шифрованного текста, ~n— мощность алфавита, а ~k— ключ.

Можно заметить, что суперпозиция двух шифрований на ключах ~k_1и ~k_2— есть просто шифрование на ключе ~k_1+k_2. Более общо, множество шифрующих преобразований шифра Цезаря образует группу ~\mathbb{Z}_n.

Алгоритм криптоанализа:

1.  Определить частоты символов алфавита. Занести их в массив FiL.(из Таблицы 1.2 или 1.3)

2.  Определить частоты символов шифртекста. Занести их в массив FiМ.

o  Вычислить сколько раз встречается тот или иной символ  в шифртексте (занести в массив freq);

o  Определить количество символов в шифртексте (i);

o  Нормировать частоты символов вычисленные в пункте а). Результат поместить в массив FiМ

3.   Найти такое значение k при котором сумма одноименных разностей d  была бы минимальной

o  вычислить для всех значений k=0..26 суммы разностей     , где

o  найти минимальную сумму разностей d

o  Запомнить значение k

4.  Расшифровать шифртекст с ключом  Key=33-k

Исходные данные, которые были применены для выполнения поставленной задачи

Вариант №3

Алфавит А1: Цифры, заглавные буквы русского алфавита и пробел (*)

Алфавит А2: Буквы латинского алфавита.

Ключ 10.

Распределение частот появление символов русского алфавита

А

0.065

Е

0.072

К

0.028

П

0.023

Ф

0.002

Щ

0.003

Ю

0.006

Б

0.014

Ж

0.007

Л

0.035

Р

0.040

Ч

0.009

Ы

0.016

Я

0.018

В

0.038

З

0.016

М

0.026

С

0.045

Ц

0.004

Ъ

0.014

└┘

0.175

Г

0.013

И

0.062

Н

0.053

Т

0.053

Ч

0.012

Ь

0,019

Д

0.025

Й

0.010

О

0.090

У

0.021

Ш

0.006

Э

0.003

Скриншоты работы программы

Исходный код программы


1)

unitUnit1;

interface

uses

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

  Dialogs, StdCtrls, ExtCtrls, Menus;

const  a='0123456789abcdefghijklmnopqrstuvwxyz:';

       u='abcdefghijklmnopqrstuvwxyz:';

type

  TForm1 = class(TForm)

    Memo1: TMemo;

    Memo2: TMemo;

    Button1: TButton;

    LabeledEdit1: TLabeledEdit;

    Button2: TButton;

    Label1: TLabel;

    Label2: TLabel;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    Button3: TButton;

    Memo3: TMemo;

    Label3: TLabel;

    Label4: TLabel;

    LabeledEdit2: TLabeledEdit;

    Memo4: TMemo;

    Memo5: TMemo;

    Memo6: TMemo;

    Button4: TButton;

    Button5: TButton;

    Button6: TButton;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var b,c: string;

i,j,k,z:integer;

begin

b:=string(Memo1.text);

for i:=1 to length(b) do

begin

case b[i] of

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

'b': b[i]:='b';

'c': b[i]:='c';

'd': b[i]:='d';

'e': b[i]:='e';

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

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

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