Разработка приложения 'Дешифратор'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    714,13 Кб
  • Опубликовано:
    2013-01-18
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка приложения 'Дешифратор'

Введение


Шифрование применяется для хранения важной информации в ненадёжных источниках и передачи её по незащищенным каналам связи. Такая передача данных представляет из себя два взаимно обратных процесса:

-    перед отправлением данных по линии связи или перед помещением на хранение они подвергаются шифрованию.

-       для восстановления шифрованных данных применяется процедура дешифрования.

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

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

1. Нормативные ссылки


В данной пояснительной записке использованы ссылки на следующие стандарты.

ГОСТ Р 1.5-2004. Стандарты национальные РФ. Правила построения, изложения, оформления и обозначения.

ГОСТ 2.301-68 ЕСКД. Форматы.

ГОСТ Р 7.0.5-2008 СИБИД. Библиографическая ссылка. Общие требования и правила составления.

ГОСТ 7.12-93 СИБИД. Библиографическая запись. Сокращения слов на русском языке. Общие требования и правила.

ГОСТ 7.9-95 СИБИД. Реферат и аннотация. Общие требования.

Гост 7.82-2001 СИБИД. Библиографическая запись. Библиографическое описание электронных ресурсов. Общие требования и правила составления.

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


Необходимо написать программу реализующую шифрование текстового массива одним из предложенных методов кодирования, используя C# Windows Form. В данном приложении были предложены такие методы кодирования, как Атбаш и шифр Цезаря.

Используя язык высокого уровня С#, создать приложение, позволяющее обычному пользователю справиться с такой задачей, как шифрование различных текстовых массивов. Для облегчения использования приложения, разработать доступный пользователю интерфейс, содержащий следующие средства:

-       средства отображения информации, отображаемую информацию, форматы <#"600417.files/image001.gif">

Таблица 2 - Кодирование методом Цезаря


Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.

Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и все ещё имеет современное приложение в системе ROT13.

В шифре Цезаря каждая буква замещается на букву, находящуюся k символами правее по модулю равному количеству букв в алфавите (у Цезаря k=3 n=50). Замена букв производится по формуле (1).

                                                               (1)

где n - количество букв в алфавите.

Обратная подстановка высчитывается по формуле (2)

                                       (2)

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


Шифр Атбаш был изобретен Ессеями, иудейской сектой повстанцев. Они разработали множество различных кодов и шифров, которые использовались для сокрытия важных имен и названий, чтобы потом избежать преследования. Знания этих кодов и шифров были потом переданы Гностикам, которые, в свою очередь, передали их Катарам. Позже Орден Тамплиеров завербовал Катарских дворян и перенял знания шифров. Таким образом, шифр был использован на протяжении многих лет, от около 500 до н.э. до 1300 г. н.э. - момента, когда Орден Тамплиеров был распущен.

Шифр простой замены, использованный для еврейского алфавита и получивший оттуда свое название. Шифрование происходит заменой первой буквы алфавита на последнюю, второй на предпоследнюю. (алеф (первая буква) заменяется на тау (последнюю), бет (вторая) заменяется на шин (предпоследняя) из этих сочетаний шифр и получил свое название). Шифр Атбаш для английского алфавита:

Исходный алфавит: 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

Алфавит замены: Z Y X W V U T S R Q P O N M L K J I H G F E D C BA

Например, слово “blogger” будет заменено на “yolttvi”. Пример кодирования методом Атбаш показан на рисунке 1.

Рисунок 1 - Шифр Атбаш

5. Технология разработки приложения


Чтобы создать приложение, следует:

1)   Открыть Microsoft Visual Studio 2010.

2)      Выбрать пункт меню «Создать проект».

)        Выбрать в шаблоне С# «Приложение Windows Form» и нажать «ОК».

)        В открывшемся окне формы переносим компоненты из Панели элементов:

а)   RichTextBox - c помощью этого элемента управления пользователь может вводить и изменять текст.

б)      TabControl - обрабатывает и отображает для пользователя соответствующую коллекцию вкладок, содержащих элементы управления и компоненты.

в)      ToolStrip - предоставляет панели инструментов и другие элементы интерфейса пользователя, поддерживающих множество форматов представления элементов.

г)       Button - при нажатии возникает событие.

д)      NumericUpDown - отображает единичное числовое значение, которое пользователь может увеличить или уменьшить с помощью кнопок «вверх-вниз» элемента управления.

е)       Label - предоставляет элементу управления текс описания либо информацию во время выполнения.

5)   Обработчик события метода Shifr1_Click отвечает за шифрование методом Цезаря. При нажатии кнопки «Шифрование» происходит кодирование текста.

6)      Обработчик события метода DeShifr1_Click отвечает за дешифрование метода Цезаря. При нажатии кнопки «Дешифрование» происходит декодирование текста.

)        Обработчик события метода Shifr2_Click отвечает за шифрование методом Атбаш. При нажатии кнопки «Шифрование» происходит кодирование текста.

)        Нажать клавишу F5 и начать компиляцию программу.

)        Программа готова к использованию.

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

В обработчике событий Shifr1_Click происходит шифрование методом Цезаря и вывод кодированного сообщения в DeShifrText1:

private void Shifr1_Click(object sender, EventArgs e)

{

int key = Convert.ToInt32(numericUpDown1.Value.ToString());

//количество сдвиговs = ShifrText1.Text;//храню слово, которое будем шифроватьs1 = "";//храню результат шифрованияalf = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";//работаю с английским алфавитомalfphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";//работаю с русским алфавитом

for (int i = 0; i < s.Length; i++)//цикл перебора букв шифруемого слова

{(s[i].ToString() == " " || s[i].ToString() == "." || s[i].ToString() == "," || s[i].ToString() == ":" || s[i].ToString() == ";" || s[i].ToString() == "?" || s[i].ToString() == "!") // эти знаки печатаются без зашифровки

{= s1 + s[i];

}(int j = 0; j < alfphabet.Length; j++)//цикл сравнения каждой бкувы с алфавитом

{(s[i] == alfphabet[j]) // в случае совпадения создаем темп, где храню номер буквы со сдвигом

{temp = j + 2*key;//номер буквы+сдвиг в темп(temp >= alfphabet.Length)//чтобы темп не уходил за рамки алфавита-= alfphabet.Length;= s1 + alfphabet[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}(int j = 0; j < alf.Length; j++)//цикл сравнения каждой буквы с алфавитом

if (s[i] == alf[j])

{temp = j + 2*key;//номер буквы-сдвиг в темп

while (temp >= alf.Length)//чтобы темп не уходил за рамки алфавита-= alf.Length;= s1 + alf[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}

DeShifrText1.Text = s1;

}

В обработчике событий DeShifr1_Click происходит декодирование сообщения, полученного раннее, которое тоже выводится на экран:

private void DeShifr1_Click(object sender, EventArgs e)

//количество сдвиговs = ShifrText1.Text;//храню слово, которое будем шифроватьs1 = "";//храню результат шифрованияalf = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";//работаю с английским алфавитомalfphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";//работаю с русским алфавитом

for (int i = 0; i < s.Length; i++)//цикл перебора букв шифруемого слова

{(s[i].ToString() == " " || s[i].ToString() == "." || s[i].ToString() == "," || s[i].ToString() == ":" || s[i].ToString() == ";" || s[i].ToString() == "?" || s[i].ToString() == "!") // эти знаки печатаются без зашифровки

{= s1 + s[i];

}(int j = 0; j < alfphabet.Length; j++)//цикл сравнения каждой бкувы с алфавитом

{(s[i] == alfphabet[j]) // в случае совпадения создаем темп, где храню номер буквы со сдвигом

{temp = j - 2*key+66;//номер буквы+сдвиг в темп(temp >= alfphabet.Length)//чтобы темп не уходил за рамки алфавита-= alfphabet.Length;= s1 + alfphabet[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}(int j = 0; j < alf.Length; j++)//цикл сравнения каждой буквы с алфавитом

if (s[i] == alf[j])

{temp = j - 2*key;//номер буквы-сдвиг в темп

while (temp >= alf.Length)//чтобы темп не уходил за рамки алфавита-= alf.Length;= s1 + alf[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}

В обработчике событий Shifr2_Click происходит кодирование методом Атбаш:

private void Shifr2_Click (object sender, EventArgs e)

{abc1 = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";abc2 = "ЯяЮюЭэЬьЫыЪъЩщШшЧчЦцХхФфУуТтСсРрПпОоНнМмЛлКкЙйИиЗзЖжЁёЕеДдГгВвБбАа";abc3 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvWwXxYyZz";abc4 = "ZzYyXxWwVvUuTtSsRrPpOoNnMmLlKkJjIiHhGgFfEeDdCcBbAa";str1 = "";str2 = ShifrText2.Text;(int i = 0; i < str2.Length; i++)

{(str2[i].ToString() == " " || str2[i].ToString() == "." || str2[i].ToString() == "," || str2[i].ToString() == ":" || str2[i].ToString() == ";" || str2[i].ToString() == "?" || str2[i].ToString() == "!") // определение знаков, которые печатаются без изменений

{

str1 = str1 + str2[i];

}(int l = 0; l < abc1.Length; l++)(str2[i] == abc1[l])

{= str1 + abc2[l];

}(int l = 0; l < abc4.Length; l++)(str2[i] == abc4[l])

{= str1 + abc3[l];

}

}.Text = str1 ;

}

В обработчике события выходToolStripMenuItem_Click_1 производится выход из приложения:

private void выходToolStripMenuItem_Click_1(object sender, EventArgs e)

{

Close();

}

В обработчике события цезарьToolStripMenuItem_Click происходит переход во вкладку кодирования методом Цезаря:

private void цезарьToolStripMenuItem_Click(object sender, EventArgs e)

{.SelectTab(0);

}

В обработчике события атбашToolStripMenuItem_Click происходит переход во вкладку кодирования методом Атбаш:

private void атбашToolStripMenuItem_Click(object sender, EventArgs e)

{

tabControl1.SelectTab(1);

}

В обработчике события о_программеToolStripMenuItem_Click открывает диалоговое окно «О программе»:

private void о_программеToolStripMenuItem_Click(object sender, EventArgs e)

{box = new AboutBox1();.Show();

}

7. Руководство пользователя

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

Компьютер:

-  процессор Intel Pentium 4 (или выше) AMD Duron (или выше);

-       оперативная память 512 Mb;

-       операционная система Windows XP/Vista/7/8;

-       клавиатура.

Программное обеспечение:

-  Microsoft Visual Studio 2010 Ultimate.

Как пользоваться программой:

. Откройте программу Шифратор/Дешифратор. Главное окно программы изображено на рисунке 2.

Рисунок 2 - Главное окно программы

. Выберите необходимый метод шифрования. Для этого нажмите кнопку

3. Затем введите кодируемый текст в активное окно.

. Если вы выбрали шифр Цезаря, то определить ключ можно в окне «Ключ»

. После этого нажмите кнопку

. Закодированный текст появится во втором окне.

. Для декодирования шифра Цезаря нужно в окне «Ключ» выставить нужное значение ключа и нажать кнопку

8. В случае необходимости шифр можно менять при переключении вкладок


. Второй способ изменения способа кодирования - это выбор шифра в выпадающем меню, указанном на рисунке 3.

Рисунок 3 - Переключение вкладок при помощи меню

. Если возникнут вопросы по работе программы, нажмите кнопку

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

информация кодирование шифрованный алгоритм

Рисунок 4 - Диалоговое окно «О программе»

Пример работы программы:

. Вводим текст и меняем количество сдвигов. Это действие показано на рисунке 5.

Рисунок 5 - Ввод текста

. После нажатия кнопки «Шифрование» происходит кодирование, представленное на рисунке 6.

Рисунок 6 - Кодирование

. Дешифрование происходит точно так же как показано выше.

. Кодирование методом Атбаш происходит после нажатия кнопки «Шифрование» на вкладке «Кодирование методом Атбаш». Кодирование Атбаш показано на рисунке 7.

Рисунок 7 - Кодирование методом Атбаш

Заключение

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

-    шифрование с использованием различных методов, таких как шифр Цезаря и шифр Атбаш;

-       их особенности и свойства;

-       а так же способы их реализации и визуализации на С# Windows Form.

Достоинствами данной программы являются:

-    целых два метода шифрования, правильно работающих;

-       легкость и простота кодирование нужной информации;

-       простота использования программы и удобство интерфейса пользователя.

Недостатками данной программы являются:

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

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

-       малое функционирование программы.

Были составлены программы для реализации этих методов шифрования. После проведённых тестов, был сделан вывод, что программы работают корректно, следовательно, поставленная задача выполнена.

Список используемых источников

1)      Т.А. Павловская. C#.Программирование на языке высокого уровня. - СПб: Питер, 2009 - 432 с.

)        Б. Шнайер. Прикладная криптография. - М.: Триумф, 1996 - 586 с.

)        В.В.Ященко. Введение в Криптографию. - СПб.: Питер, 2001 - 288 с.

)        Эндрю Троелсен. Язык программирования C# 2010 и платформа. NET 4.0. - М.: Вильямс, 2011. - 455 с.

)        Стиллмен Э. Изучаем C#. - Волгоград: Росмашпечать, 2010 - 456 с.

Приложение А

 

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

System;

using System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.IO;курсовой.Resources;

курсовой

{partial class Form1 : Form

{Form1()

{();

}

void Shifr1_Click(object sender, EventArgs e)

{key = Convert.ToInt32(numericUpDown1.Value.ToString()); //количество сдвигов

string s = ShifrText1.Text;//храню слово, которое будем шифроватьs1 = "";//храню результат шифрованияalf = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";//работаю с английским алфавитомalfphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";//работаю с русским алфавитом

for (int i = 0; i < s.Length; i++)//цикл перебора букв шифруемого слова

{(s[i].ToString() == " " || s[i].ToString() == "." || s[i].ToString() == "," || s[i].ToString() == ":" || s[i].ToString() == ";" || s[i].ToString() == "?" || s[i].ToString() == "!") // эти знаки печатаются без зашифровки

{= s1 + s[i];

}(int j = 0; j < alfphabet.Length; j++)//цикл сравнения каждой бкувы с алфавитом

{(s[i] == alfphabet[j]) // в случае совпадения создаем темп, где храню номер буквы со сдвигом

{temp = j + 2*key;//номер буквы+сдвиг в темп(temp >= alfphabet.Length)//чтобы темп не уходил за рамки алфавита-= alfphabet.Length;= s1 + alfphabet[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}(int j = 0; j < alf.Length; j++)//цикл сравнения каждой буквы с алфавитом

if (s[i] == alf[j])

{temp = j + 2*key;//номер буквы-сдвиг в темп

while (temp >= alf.Length)//чтобы темп не уходил за рамки алфавита-= alf.Length;= s1 + alf[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}.Text = s1;

}

void DeShifr1_Click(object sender, EventArgs e)

{key = Convert.ToInt32(numericUpDown1.Value.ToString()); //количество сдвигов

string s = ShifrText1.Text;//храню слово, которое будем шифроватьs1 = "";//храню результат шифрованияalf = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";//работаю с английским алфавитомalfphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";//работаю с русским алфавитом

for (int i = 0; i < s.Length; i++)//цикл перебора букв шифруемого слова

{(s[i].ToString() == " " || s[i].ToString() == "." || s[i].ToString() == "," || s[i].ToString() == ":" || s[i].ToString() == ";" || s[i].ToString() == "?" || s[i].ToString() == "!") // эти знаки печатаются без зашифровки

{= s1 + s[i];

}(int j = 0; j < alfphabet.Length; j++)//цикл сравнения каждой бкувы с алфавитом

{(s[i] == alfphabet[j]) // в случае совпадения создаем темп, где храню номер буквы со сдвигом

{temp = j - 2*key+66;//номер буквы+сдвиг в темп(temp >= alfphabet.Length)//чтобы темп не уходил за рамки алфавита-= alfphabet.Length;= s1 + alfphabet[temp];//заношу зашифрованную букву в переменную для ее хранения

}

if (s[i] == alf[j])

{temp = j - 2*key;//номер буквы-сдвиг в темп

while (temp >= alf.Length)//чтобы темп не уходил за рамки алфавита-= alf.Length;= s1 + alf[temp];//заношу зашифрованную букву в переменную для ее хранения

}

}.Text = s1;

}void Shifr2_Click(object sender, EventArgs e)

{abc1 = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";abc2 = "ЯяЮюЭэЬьЫыЪъЩщШшЧчЦцХхФфУуТтСсРрПпОоНнМмЛлКкЙйИиЗзЖжЁёЕеДдГгВвБбАа";abc3 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvWwXxYyZz";abc4 = "ZzYyXxWwVvUuTtSsRrPpOoNnMmLlKkJjIiHhGgFfEeDdCcBbAa";str1 = "";str2 = ShifrText2.Text;(int i = 0; i < str2.Length; i++)

{(str2[i].ToString() == " " || str2[i].ToString() == "." || str2[i].ToString() == "," || str2[i].ToString() == ":" || str2[i].ToString() == ";" || str2[i].ToString() == "?" || str2[i].ToString() == "!") // эти знаки печатаются без зашифровки

{= str1 + str2[i];

}(int l = 0; l < abc1.Length; l++)(str2[i] == abc1[l])

{= str1 + abc2[l];

}(int l = 0; l < abc4.Length; l++)(str2[i] == abc4[l])

{= str1 + abc3[l];

}

}.Text = str1 ;

}

void выходToolStripMenuItem_Click_1(object sender, EventArgs e)

{();

}

void цезарьToolStripMenuItem_Click(object sender, EventArgs e)

{.SelectTab(0);

}

void ашерToolStripMenuItem_Click(object sender, EventArgs e)

{.SelectTab(1);

}

void о_программеToolStripMenuItem_Click(object sender, EventArgs e)

{box = new AboutBox1();.Show();

}

}

}

Похожие работы на - Разработка приложения 'Дешифратор'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!