Министерство образования и науки
Республики Казахстан
Карагандинский государственный технический университет
Кафедра
КУРСОВАЯ РАБОТА
на тему: Текстовый редактор "Блокнот" с функцией шифрования -
дешифрования классическими криптографическими методами
Выполнил:
Проверил:
Караганда 2009 г.
Содержание
Введение
Теоретическая часть
Шифры простой замены
Гаммирование
Шифры перестановки
Двойная перестановка столбцов и строк
Метод шифрования с использованием таблицы Виженера
Практическая часть
Вывод
Листинг программы
Цель работы:
Изучение принципа программной реализации классических криптографических методов:
метод Цезаря;
метод Гронсфельда;
метод гаммирования;
метод двойных перестановок;
метод замены с использованием таблицы Виженера.
Задание:
1. Необходимо создать текстовый редактор "Блокнот", который содержал следующие объекты:
окно ввода исходного текста;
окно вывода зашифрованного текста;
кнопки "Шифровать", "Дешифровать", "Выбор метода шифрования";
строка меню, содержащая меню для работы с файлами, меню для работы с текстом (вырезать, вставить, отменить, повторить, поиск и т.д.), меню для выбора методов шифрования, меню "о программе" и "о разработчике".
Составить вербальный алгоритм для каждого метода шифрования.
Составить программу для шифрования заданными методами.
Составить программу для дешифрования заданными методами.
Оценить результативность реализованных методов.
Система шифрования Цезаря - частный случай шифра простой замены. Метод основан на замене каждой буквы сообщения на другую букву того же алфавита, путем смещения от исходной буквы на K букв.
Шифры сложной замены
Шифр Гронсфельда состоит в модификации шифра Цезаря числовым ключом. Для этого под буквами сообщения записывают цифры числового ключа. Если ключ короче сообщения, то его запись циклически повторяют. Шифротекст получают примерно также как в шифре Цезаря, но отсчитывают не третью букву по алфавиту (как в шифре Цезаря), а ту, которая смещена по алфавиту на соответствующую цифру ключа.
Пусть в качестве ключа используется группа из трех цифр - 314, тогда
Сообщение СОВЕРШЕННО СЕКРЕТНО
Ключ 3143143143143143143
Шифровка ФПИСЬИОССАХИЛФИУСС
В шифрах многоалфавитной замены для шифрования каждого символа исходного сообщения применяется свой шифр простой замены (свой алфавит).
АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_ | |
А | АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_ |
Б | _АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ |
В | Я_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮ |
Г | ЮЯ_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭ |
. | ………… |
Я | ВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_АБ |
_ | БВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_А |
Каждая строка в этой таблице соответствует одному шифру замены аналогично шифру Цезаря для алфавита, дополненного пробелом. При шифровании сообщения его выписывают в строку, а под ним ключ. Если ключ оказался короче сообщения, то его циклически повторяют. Шифротекст получают, находя символ в колонке таблицы по букве текста и строке, соответствующей букве ключа. Например, используя ключ АГАВА, из сообщения ПРИЕЗЖАЮ ШЕСТОГО получаем следующую шифровку:
Сообщение | ПРИЕЗЖАЮ_ШЕСТОГО |
Ключ | АГАВААГАВААГАВАА |
Шифровка | ПНИГЗЖЮЮЮАЕОТМГО |
В компьютере такая операция соответствует сложению кодов ASCII символов сообщения и ключа по модулю 256.
Процесс шифрования заключается в генерации гаммы шифра и наложении этой гаммы на исходный открытый текст. Перед шифрованием открытые данные разбиваются на блоки Т (0) i одинаковой длины (по 64 бита). Гамма шифра вырабатывается в виде последовательности блоков Г (ш) i аналогичной длины (Т (ш) i=Г (ш) i+Т (0) i, где + - побитовое сложение, i =1-m).
Процесс дешифрования сводится к повторной генерации шифра текста и наложение этой гаммы на зашифрованные данные T (0) i=Г (ш) i+Т (ш) i.
Алгоритмы двойных перестановок. Сначала в таблицу записывается текст сообщения, а потом поочередно переставляются столбцы, а затем строки. При расшифровке порядок перестановок был обратный. Пример данного метода шифрования показан в следующих таблицах:
2 | 4 | 1 | 3 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | |||
4 | П | Р | И | Е | 4 | И | П | Е | Р | 1 | А | З | Ю | Ж |
1 | З | Ж | А | Ю | 1 | А | 3 | Ю | Ж | 2 | Е | _ | С | Ш |
2 | _ | Ш | Е | С | 2 | Е. | _ | С | Ш | 3 | Г | Т | О | О |
3 | Т | О | Г | О | 3 | Г | Т | О | О | 4 | И | П | Е | Р |
В результате перестановки получена шифровка АЗЮЖЕ_СШГТООИПЕР. Ключом к шифру служат номера столбцов 2413 и номера строк 4123 исходной таблицы.
Число вариантов двойной перестановки достаточно быстро возрастает с увеличением размера таблицы: для таблицы 3 х 3 их 36, для 4 х 4 их 576, а для 5*5 их 14400.
Этот шифр можно описать таблицей шифрования, называемой таблицей Виженера, по имени Блеза Виженера, дипломата XVI века, который развивал и совершенствовал криптографические системы:
АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ | |
А | АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ |
Б | _АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ |
В | Я_АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮ |
Г | ЮЯ_АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭ |
... ... | |
Я | ВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ_АБ |
_ | БВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ_А |
Каждая строка в этой таблице соответствует одному шифру замены вроде шифра Юлия Цезаря для алфавита, дополненного пробелом. При шифровании сообщения его выписывают в строку, а под ним ключ. Если ключ оказался короче сообщения, то его циклически повторяют. Шифровку получают, находя символ в колонке таблицы по букве текста и строке, соответствующей букве ключа. Этот очень распространенный вид шифра сохранился до наших дней. Например, используя ключ АГАВА, из сообщения ПРИЕЗЖАЮ ШЕСТОГО получаем следующую шифровку:
сообщение: | ПРИЕЗЖАЮ ШЕСТОГО |
ключ: | АГАВААГАВААГАВАА |
шифровка: | ПНИГЗЖЮЮЮАЕОТМГО |
В компьютере такая операция соответствует сложению кодов ASCII символов сообщения и ключа по некоторому модулю. Кажется, что если таблица будет более сложной, чем циклическое смещение строк, то шифр станет надежнее. Это действительно так, если ее менять почаще, например, от слова к слову. Но составление таких таблиц, представляющих собой латинские квадраты, где любая буква встречается в строке или столбце один раз, трудоемко и его стоит делать лишь на ЭВМ.
Внешний вид текстового редактора "Блокнот" с функцией шифрования-дешифрования классическими криптографическими методами представлен на рисунке 1.
Рисунок 1 - Главная форма текстового редактора
В текстовом редакторе имеются меню "Файл" (рисунок 2), "Правка" (рисунок 3), "Метод" (рисунок 4), "Справка" (рисунок 5).
Рисунок 2 - Меню "Файл" текстового редактора.
Рисунок 3 - Меню "Правка" текстового редактора
Рисунок 4 - Меню "Метод" текстового редактора
Рисунок 5 - Меню "Справка" текстового редактора
Пользователь также может выбрать метод шифрования при нажатии кнопки "Метод шифрования", при этом появится окно "Метод шифрования", показанный на рисунке 6.
Рисунок 6 - Окно "Метод шифрования" текстового редактора
В результате выполнения данной курсовой работы, я ознакомилась с классическими методами шифрования. А также изучила принцип программной реализации классических криптографических методов: метода Цезаря; метода Гронсфельда; метода гаммирования; метода двойных перестановок; метода замены с использованием таблицы Виженера. Я смогла, применяя свои знания в области программирования, реализовать их программно.
procedure TForm1. N23Click (Sender: TObject);
begin
form2. SHOWMODAL;
end;
procedure TForm1. N24Click (Sender: TObject);
begin
Form3. SHOWMODAL;
end;
procedure TForm1. N5Click (Sender: TObject);
var i: integer;
begin
for i: =0 to m2. Lines. Count-1 do
m2. Lines [i]: ='';
for i: =0 to m1. Lines. Count-1 do
m1. Lines [i]: =''; // очистка memo1
m1. SetFocus;
end;
procedure TForm1. N6Click (Sender: TObject);
var
i: integer;
begin
OpenDialog1. Filter: = 'Текстовые файлы| *. txt';
if OpenDialog1. Execute then
begin
EdFile: =OpenDialog1. FileName; {в переменную присваиваем
имя и полный путь к файлу}
m1. Lines. LoadFromFile (EdFile);
end;
end;
procedure TForm1. N7Click (Sender: TObject);
begin
saveDialog1. Filter: = 'Текстовые файлы| *. txt';