Филиал государственного образовательного учреждения высшего профессионального образования
«Санкт-Петербургский государственный инженерно-экономический университет» в г.Чебоксары
Кафедра информационных систем и математики
Отчет по лабораторной работе №3
По дисциплине: Информационная безопасность
На тему: Изучение симметричных алгоритмов шифрования
Выполнила:
студентка
группы 92-06
Удалова Л.В.
Руководитель:
ст. преп. А.А.Алякина
1. Цель работы:
Изучение симметричных алгоритмов
1.1 Порядок выполнения:
1. Изучить основы шифрования данных методом в соответствии с предложенным вариантом.
2. В соответствии с индивидуальным заданием определить функцию шифрования, разработать алгоритм и написать программу, обеспечивающую ввод произвольного открытого текста и выдачу шифрограммы, полученную изучаемым методом, а также расшифрованию – получение открытого текста из шифрограммы.
Шифрующие таблицы позволяют шифровать сразу по две буквы. Такие шифры называются биграммными.
Шифр Плейфера, изобретенный в 1854 г., является наиболее известным биграммным шифром замены. Он применялся Великобританией во время первой мировой войны. Основой шифра Плейфера является шифрующая таблица со случайно расположенными буквами алфавита исходных сообщений.
Для удобства запоминания шифрующей таблицы отправителем и получателем сообщений можно использовать ключевое слово (или фразу) при заполнении начальных строк таблицы. В целом структура шифрующей таблицы системы Плейфера полностью аналогична структуре шифрующей таблицы Трисемуса. Поэтому для пояснения процедур шифрования и расшифрования в системе Плейфера воспользуемся шифрующей таблицей Трисемуса .
Процедура шифрования включает следующие шаги:
1. Открытый текст исходного сообщения разбивается на пары букв (биграммы). Текст должен иметь четное количество букв и в нем не должно быть биграмм, содержащих две одинаковые буквы. Если эти требования не выполнены, то текст модифицируется даже из-за незначительных орфографических ошибок.
2. Последовательность биграмм открытого текста преобразуется с помощью шифрующей таблицы в последовательность биграмм шифртекста по следующим правилам:
· Если обе буквы биграммы открытого текста не попадают на одну строку или столбец (как, например, буквы А и Й в табл. на рис.8), тогда находят буквы в углах прямоугольника, определяемого данной парой букв. (В нашем примере это буквы АЙОВ. Пара букв АЙ отображается в пару 0В. Последовательность букв в биграмме шифртекста должна быть зеркально расположенной по отношению к последовательности букв в биграмме открытого текста).
· Если обе буквы биграммы открытого текста принадлежат одному столбцу таблицы, то буквами шифртекста считаются буквы, которые лежат под ними. (Например, биграмма НС дает биграмму шифртекста ГЩ.) Если при этом буква открытого текста находится в нижней строке, то для шифртекста берется соответствующая буква из верхней строки того же столбца. (Например, биграмма ВШ дает биграмму шифртекста ПА.)
· Если обе буквы биграммы открытого текста принадлежат одной строке таблицы, то буквами шифртекста считаются буквы, которые лежат справа от них. (Например, биграмма НО дает биграмму шифртекста ДЛ.) Если при этом буква открытого текста находится в крайнем правом столбце, то для шифра берут соответствующую букву из левого столбца в той же строке. (Например, биграмма ФЦ дает биграмму шифртекста ХМ.).
Зашифруем текст
ВСЕ ТАЙНОЕ СТАНЕТ ЯВНЫМ
Разбиение этого текста на биграммы дает
ВС ЕТ АЙ НО ЕС ТА НЕ ТЯ ВН ЫМ
Данная последовательность биграмм открытого текста преобразуется с помощью шифрующей таблицы (см. рис.8) в следующую последовательность биграмм шифртекста
ГП ДУ ОВ ДЛ НУ ПД ДР ЦЫ ГА ЧТ
При расшифровании применяется обратный порядок действий.
Следует отметить, что шифрование биграммами резко повышает стойкость шифров к вскрытию.
Б | А | Н | Д | Е | Р | О | Л |
Ь | В | Г | Ж | 3 | И | Й | К |
М | П | С | Т | У | Ф | Х | Ц |
Ч | Ш | Щ | Ы | Ъ | Э | Ю | Я |
Рис. 1. Шифрующая таблица с ключевым словом БАНДЕРОЛЬ
3. Блок-схемы биграммного шифрования Плейфера
3.1 Алгоритм функции шифрования
Приложение 1
Алгоритм функции шифрования
3.2 Алгоритм функции расшифровывания
Приложения 2
Алгоритм функции расшифровывания:
4. Текст программы биграммного шифрования Плейфера
Владение языками программирования позволяет значительно расширить круг выполняемых задач специалистом по защите информации и более полно использовать возможности компьютера.
Данная программа реализована на языке Delphi 7.
Delphi – Borland Delphi представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI), или 32-битных консольных приложений (программ, которые не имеют графического интерфейса).
Ниже приведен текст программы «Биграммного шифрования Плейфейра»:
unit Unit1;
interface
uses
Windows, Messages, MATH, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls, Buttons, XPMan, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Memo2: TMemo;
Memo3: TMemo;
Memo1: TMemo;
StringGrid1: TStringGrid;
GroupBox1: TGroupBox;
UpDown1: TUpDown;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
XPManifest1: TXPManifest;
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Open1: TMenuItem;
Save1: TMenuItem;
N1: TMenuItem;
Savedecrypt1: TMenuItem;
Edit1: TMenuItem;
Crypt1: TMenuItem;
Decrypt1: TMenuItem;
Clear1: TMenuItem;
About1: TMenuItem;
About2: TMenuItem;
procedure Button2Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure Memo1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Exit1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Savedecrypt1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Clear1Click(Sender: TObject);
procedure Crypt1Click(Sender: TObject);
procedure Decrypt1Click(Sender: TObject);
procedure About2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a: array of array of char;
rowk,colk:integer;
alf:string;
implementation
uses AboutF;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
memo1.Lines.LoadFromFile(OpenDialog1.FileName);
statusbar1.Panels[0].Text:='Текст загружен';