Написать программу «Шифр Цезаря»

     Основные данные о работе

Версия  шаблона 2.1
Филиал Обнинский
Вид работы Курсовая работа
Название  дисциплины Программирование  на языке высокого уровня
Тема  Написать  программу «Шифр Цезаря»
Фамилия студента Юренков
Имя студента Александр
Отчество  студента Викторович
№ контракта 02900090602046

     Содержание

     Основные  данные о работе …………………………………………..……...…….1

     Введение  ……………………………………………………………..……...……...3

     1. Разработка эскизного и технического проекта ………………………..………6

     1.1 Анализ задачи ………………………………………………………………….6

     1.2Описание алгоритма ……………………………………………………………7

     2. Разработка рабочего проекта …………………………………………………...9

     2.1 Выбор состава технических и программных средств ……………………….9

     2.2 Описание программы ………………………………………………………….9

     2.3 Текст программы ……………………………………………………………..10

     Заключение  ……………………………………………………………………….13

     Глоссарий …………………………………………………………………………15

     Список  использованных источников …………………………………………....18

     Приложения………..………………………………………………………….......20

     Введение

             Программы, работающие на компьютере, можно разделить на три категории: Прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ: редактирование текстов, рисование, обработку информационных массивов и т.д. Основная цель данной курсовой работы – обучение. Студент учится формировать постановку задач, составлять алгоритмы их решения и формализовать эти алгоритмы в популярной среде программирования. В ходе написания программы студент осваивает язык C++ и особенности его трансляции в компиляторе Builder.

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

     Для достижения этих целей была выбрана  задача «Шифр Цезаря». Уровень сложности  этой задачи позволяет ознакомиться с основными этапами написания реальных программ, и приобрести определенные навыки программирования.

       Системные программы, выполняющие  различные вспомогательные функции,  например диагностика компьютера  или резервное копирование информации. Инструментальные системы (системы программирования), обеспечивающие создание новых программ. Данные категории программ в свою очередь так – же разделяются на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Для математических вычислений существует множество различных програмных продуктов. Это известные всем пакеты MathCad, MathLab, Mathematika, Axum. Есть и более порстые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора).

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

     О важности сохранения информации в тайне  знали уже в древние времена, когда с появлением письменности появилась и опасность ознакомления ней нежелательных лиц. Было три основных способа защиты информации. Один из них предполагал защиту ее чисто физическими методами: охрана документа - носителя информации -физическими лицами, передача его специальным курьером и т.д. Второй способ получил название "стеганография" (латино-греческое сочетание слов, означающих в совокупности "тайнопись"). Его принцип был в скрытии самого факта наличия информации. В этом случае использовались так называемые симпатические чернила. При соответствующем "проявлении" бумаги текст становится видимым. Один из примеров сокрытия информации приведен в письменах древнегреческого историка Геродота. На голове раба, которая брилась наголо, записывалось нужная информация. И когда волосы его становились достаточно длинными, раба отправляли к получателю, который заново брил его голову и читал полученное сообщение.

     И ещё один способ защиты информации заключался в переделывании смыслового текста в некий набор хаотических знаков (или букв алфавита). Адресат этого сообщения имел возможность преобразовать его в то же самое смысловое сообщение, если обладал ключом к его построению. Этот способ охраны информации назывался криптографическим. Криптография - слово греческое и в переводе означает "тайнопись". По утверждению многих специалистов криптография по возрасту - современник египетских пирамид. В документах древних стран - Индии, Египта, Месопотамии - есть сведения о системах и способах составления шифрованных писем.

       Более подробные и достоверные сведения о шифрах относятся к Древней Греции.

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

     Историческим  примером шифра замены является шифр Цезаря (1 век до н.э.), описанный Римским историком Светонием. Гай Юлий Цезарь пользовался в своей переписке шифр собственного изобретения. Применительно к современному русскому языку он состоял в следующем. Переписывался алфавит: А, Б, В, Г, Д,Е,...,; затем под ним переписывался такой же алфавит, но со смещением на 3 буквы влево.

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

     Основная  часть

     1 Разработка эскизного и технического проектов программы

     Задача

     Написать  программу «Написать программу  «Шифр Цезаря». Использовать одно поле для ввода операторов и для  вывода результата

       1.1 Анализ задачи

     Эту задачу для решения удобно разбить на несколько подзадач, а именно:

     осуществить подготовку данных;

     отдельно  их обработку;

     сделать вывод результата.

     Подготовка  данных состоит в:

     - введении исходного текста;

     - автоматическом выборе ключа;

     Обработка данных заключается в:

     - постепенном чтении кодов всех символов;

     - для режима шифрования - в постепенной замене каждого считанного кода буквы русского алфавита на код буквы, отстоящей по кругу от исходной на число букв, соответствующему ключу ;

     - для режима дешифрования – в постепенной смене каждого считанного кода буквы русского алфавита на код буквы, отстоящей по кругу против часовой стрелки от начальной на число букв, соответствующему ключу ;

     Вывод результатов объединяет в себя в зависимости от выбранного режима работы программы:

     - выведение полученных результатов, а именно зашифрованный/расшифрованный текст. 

     1.2 Описание алгоритма.

     Алгоритм  состоит из:

     1 Общая блок-схема, состоит из:

     А) Подготовка необходимых данных.

     Б) Шифрование \ дешифрование текста.

     В) Вывод результатов.

     2 Шифрование текста, состоит из:

     А) Считывание кода очередного символа.

     Б) Сдвиг буквы.

     В) Вывод символа во второе текстовое поле, и отчистка первого поля.

     3 Блок-схема функции дешифрования текста состоит из:

     А) Считывание кода очередного символа  из второго текстового поля.

     Б) Сдвиг буквы.

     В) Запись символа в первое текстовое  поле и отчистка второго поля. 

       Описание алгоритма представлено  на рис.1  Общая  блок- схема 
 
 
 

     Описание  Алгоритма

     

     Рисунок 1 – Общая блок-схема программы.

     Шифрование  текста представлено на блок-схеме 2

     

     Рисунок 2 – Блок-схема функции шифрования текста.

     

     Рисунок 3 – Блок-схема функции дешифрования текста. 
 
 
 

     2 Разработка рабочего проекта

 

     2.1 Выбор состава  технических и программных средств

     Для создания данной программы была использована интегральная среда разработки программ Delphi 7.0. Среда Delphi позволяет достаточно быстро разрабатывать приложения для Windows.

     Технические характеристики компьютера: Pentium 100 и  выше; объём оперативной памяти не менее 10 Мб; жесткий диск объёмом не менее 600 Мб.

     Дополнительное  оборудование (устройство печати, устройство сканирования, дополнительные дисководы и т.д.) не используются.  

     2.2 Описание программы 

 
 

     -Для  шифрования нужно занести текст  в поле находящееся в левой части программы и активировать на кнопку «Зашифровать».

     -Для расшифровывания нужно занести текст в поле расположенное в правой части программы и активировать на клавишу «Расшифровать».

     -Для  выхода из приложения нужно нажать кнопку «Выход». 

     2.3 Текст программы 

     unit Unit1;

     interface

     uses

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

       Dialogs,xpman, StdCtrls, ExtCtrls;

     type

       TForm1 = class(TForm)

         Memo1: TMemo;

         Memo2: TMemo;

         Button1: TButton;

         Button2: TButton;

         Button3: TButton;

         procedure Button3Click(Sender: TObject);

         procedure Button1Click(Sender: TObject);

        procedure Button2Click(Sender: TObject);

       private

         { Private declarations }

       public

         { Public declarations }

       end;

     var

       Form1: TForm1;

       st,s:string;

       x,i:integer;

     implementation

     {$R *.dfm}

     procedure TForm1.Button3Click(Sender: TObject);

     begin

     close;  // покидание программы

     end;

     procedure TForm1.Button1Click(Sender: TObject);  // Шифровка надписи

     begin

     st:=memo1.lines.Text; // Присваивание переменной st значение  текстового поля

     x:=3;           // значение ключа

     memo2.Lines.Clear;

      for i:=1 to length(st) do  // Алгоритм шифровки текста

     if (st[i]<>'')  then

     begin

      s:=chr((ord(st[i])+x));

     memo2.lines.Text:=memo2.lines.Text+s;

     end;

     memo1.Lines.Clear ;   // очистка текстового поля после окончания шифрования

     end;

     procedure TForm1.Button2Click(Sender: TObject);  // Дешифровка текста

     begin

     st:=memo2.lines.Text; // Присваивание переменной st значение  текстового поля

     memo1.Lines.Clear;

     for i:=1 to length(st) do // Алгоритм дешифровки текста

     if (st[i]<>'')  then

     begin

      s:=chr((ord(st[i])-x));

     memo1.lines.Text:=memo1.lines.Text+s;

     end;

     memo2.Lines.Clear ;   // очищение текстового поля после окончания дешифрования

      end;

     end.

     Заключение

 

     Целью данной работы было создание программы  с помощью среды разработки Delphi.

     В ходе работы реализованы следующие  задачи:

     - описан алгоритмы решения задачи

     - описана работа программы

     - реализована программу с помощью  Delphi 7.

     - описано руководство пользователя

     В дальнейшем программа может быть усовершенствована, например добавлено  использование памяти операций.

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

     Своё  название вид шифровки получил, благодаря римскому императору Гай Юлий Цезарь (Julius Caesar).Цезарь использовал шифровку для тайной переписки. Однако современный криптоанализ не рассматривает шифровку Цезаря как шифр приемлемой стойкости. Криптоаналитическая атака против системы одноалфавитной замены начинается с подсчета частот появления символов: определяется число появлений каждой буквы в шифртексте. Затем полученное распределение частот букв в шифр тексте сравнивается с распределением частот букв в алфавите исходных сообщений, например в английском. Буква с наивысшей частотой появления в шифр тексте заменяется на букву с наивысшей частотой появления в английском языке и т.д. Вероятность успешного вскрытия системы шифрования повышается с увеличением длины шифр текста. 

     Шифр  Цезаря подвержен частному анализу, так как является одно -алфавитным шифром подстановки, но это отнюдь не главная «слабость». Так, малое количество ключей - 33 для российского алфавита и 26 для английского – даёт возможность проведения атак. Открытый текст записывается для всех вероятных ключей, а один из вариантов и будет является раскрытым сообщением.

     Соотнося каждому символу порядковый номер, начиная с 9, шифровка и дешифровка выражается формулами:

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

     Y=x + k (mod n) и X=y – k (mod n), где:

     X — символ открытого текста,

     Y — символ шифрованного текста,

     n — мощность алфавита,

     k — ключ.

     Отметим, что суперпозиция 2х шифровках на ключах K1 и K2 – просто шифровка на ключе K1+K2. В совокупности шифрующие преобразования шифра Цезаря образуют группу Zn.

     К примеру, оригинальный текст: «целый день он в гамаке дремлет с зонтиком в руке».

     Шифрованный текст: «щиоюмзирясрежгпгнизуипоихфксрхлнспеуцни»

     Используя ключ k = 3, буква Ц «сдвигается» на три буквы вперед и становится буквой «Щ»; буква Е, перемещённый на три буквы вперед, становится буквой «И», и так далее.

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

     Возможно увеличить возможности данной программы путем добавления поддержки других языков, дешифровки текста при помощи оценивания редко и часто встречающихся сочетаний букв, а также возможности распечатки результатов работы программы. В результате выполнения курсовой работы были получены навыки составления алгоритма для поставленной задачи и воплощения этого алгоритма в текст программы, написанной на языке C++ в среде Builder. А также было разработано программное средство, успешно решающее поставленную задачу, т.е. была написана программа, работающая в двух режимах, позволяющая шифровать и расшифровывать тексты «методом Цезаря».

     Основных  методом, использованным при решении  задачи, был метод перебора, вследствие чего скорость работы программы при больших исходных данных может уменьшаться. 

     Глоссарий

№ п/п Понятие      Определение
1 стеганография      (латино-греческое  сочетание слов, означающих в  совокупности "тайнопись"
2 Криптография      Греческое слово и в переводе означает "тайнопись"
3 Алфавит      Окончательное множество используемых для кодирования информации знаков.
4 Текст      упорядоченный набор из элементов алфавита.
5 Шифрование      преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом.
6 Дешифрование      Обратный  шифрованию процесс. На основе ключа  шифрованный текст преобразуется  в исходный.
7 Ключ      информация, необходимая для беспрепятственного шифрования и дешифрования текстов.
8 Криптостойкость      характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа(т.е. криптоанализу). Имеется несколько показателей криптостойкости, среди которых:

     -количество всех возможных ключей;

-среднее  время, необходимое для криптоанализа

9 криптоанализ      исследование возможности расшифровывания информации без знания ключей.
    10
     База данных
     совокупность  данных, числовых значений показателей, используемых при анализе и расчетах. При применении ЭВМ — файл (файлы) данных, для обращения к которому используют средства системы управления Б.Д
   11
     Диалоговая  программа
     программа, рассчитанная на удобное взаимодействие пользователя и ЭВМ
   12
     Кодирование
     перевод алгоритмической  структуры на язык программирования
    13
     Команды
     сообщения, посредством которых осуществляется управление ходом диалога
    14
     Меню
     способ проведения диалога, когда на экран выводится  информация в виде списка альтернатив, а пользователь выбирает нужный пункт.
    15
     Ошибка
     сообщение о  том, что работа программного комплекса  прервана, так как введенные пользователем  входные данные не могут быть обработанны
   16
     Процедура
     понятие, определяющее аппарат подпрограмм; часть программы предназначенная для решения определённой задачи или подзадачи
   17
     Справка
     сообщение в  виде справочной информации, что следует  делать дальше и почему это надо делать при затруднениях, возникающих  в процессе работы пользователя с  программным комплексом.
   18
     Тестирование
     действия  по контролю правильности функционирования программы
    19
     Форма
     окно приложения на этапе разработки
    20
     Файл проекта
     автоматически создаваемый файл, связывающий вместе все файлы приложения и содержащий код инициализации

     Список  использованных источников

 
1 Флеиов М. Е. Профаммирование в Delphi глазами хакера. - СПб.: БХВ-Петербург, 2003.
2 Бакнелл Джулиан  М. Фундаментальные алгоритмы и  структуры данных в Delphi: Пер. с англ. / Джулиан М. Бакнелл. - СПб: ООО "ДиаСофтЮП", 2003.
3 ШУМАКОВ Базы данных в среде Delphi 7
4 Парижский С. М. Delphi. Учимся на примерах/Под ред. Ю. А. Шпака - К.: "МК-Пресс", 2005.
5 Когаловский, М. Р. Энциклопедия технологий баз данных [Текст] / М. Р. Когаловский. – М. : Финансы  и статистика, 2005.
6 Кормен. Алгоритмы. Построения и анализ. - М. 2002
7 Кузин, А. В. Базы данных [Текст] / А. В. Кузин, С. В. Левонисова. – М. : Академия, 2005.
8 Дж. Макконнелл Основы современных алгоритмов. 2-е  дополненное издание. - М: Техносфера, 2004.
9 Мамаев, Е. В. Microsoft SQL Server 2000 [Текст] / Е. В. Мамаев. – СПб. : БХВ-Петербург, 2005.
     10 Марков, А. С. Базы данных: Введение в теорию и методологию [Текст] / А. С. Марков,  К. Ю. Лисовский. – М. : Финансы и статистика, 2006.
11 Н.Культин «Delphi в задачах и примерах» -СПб.:   Издательство«БХВ-  Петербург» 2003
      12 А.Я. Архангельский  Программирование в Delphi 7, -М.: Издательство «Бином» 2003      
    13 С.И. Бобровский Delphi 7^ Учебный курс, -СПб.: Издательство «Питер» 2004      
     14 А.Г.Федоров  «Delphi 3 для всех», 1998 BHV - Санкт - Петербург
     15 Н. Культин - Программирование в Turbo Pascal 7.0 и Delphi
     16      Е.Марков «Программирование в Delphi 4», -СПб, «БХВ-Петербург», 1999      
     17      М.Фленов «Программирование в Delphi глазами хакера» -СПб.: Издательство «БХВ-Петербург» 2004      
     18      С.И. Бобровский Delphi 7^ Учебный курс, -СПб.: Издательство «Питер» 2004      
     19      «Турбо  Паскаль 7.0.» Киев, 1996      
     20      Д.Осипов «Delphi. Профессиональное программирование»      

     Приложения

1
Написать программу «Шифр Цезаря»