Реализация Программы шифрования и дешифрования при помощи Шифра Плейфера

 

МИНИСТЕРСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ РЕСПУБЛИКИ БЕЛАРУСЬ

«ВЫСШИЙ ГОСУДАРСТВЕННЫЙ КОЛЛЕДЖ СВЯЗИ»

ФАКУЛЬТЕТ ЭЛЕКТРОСВЯЗИ

КАФЕДРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СЕТЕЙ ТЕЛЕКОММУНИКАЦИЙ










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

по дисциплине: «Способы программирования»

Тема: Реализация Программы шифрования и дешифрования при помощи Шифра Плейфера









Минск



Введение


Целью курсового проекта является разработка программы шифрования и дешифрования строк при помощи шифра Плейфера.

Си (англ. C) - стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ.

Для написания программы PLAYFER.EXE использованы библиотеки:

) stdio.h (от англ. standard input/output header - стандартный заголовочный файл ввода/вывода) - заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода;

) conio.h (от англ. console input-output - консольный ввод-вывод) - заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя;

) string.h - заголовочный файл стандартной библиотеки языка Си, содержащий функции для работы с нуль-терминированными строками и различными функциями работы с памятью;

) stdafx.h - заголовочный файл, служит для генерации файла предкомпилированных заголовков; в него включено большинство стандартных и используемых в каждом приложении включаемых файлов. Сделано это для того, чтобы ускорить компиляцию проекта.


1. Формулировка задачи


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

Шифр Плейфера представляет собой подстановку символов из таблицы вместо биграмм текста (биграммы - 2 символа в тексте). Возможно 3 варианта подстановки:

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

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

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

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


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


Структурная схема программы PLAYFER.EXE представлена на рисунке 1.


Рисунок 1 - Структура программы PLAYFER.EXE


Исходный код программы приведен в листинге приложения А. Комментарии раскрывают детали и назначение элементов программного кода.

Кратко опишем суть работы функций программы, которые описаны сразу после глобальных переменных:() - функция, которая реализует создание таблицы шифрования, необходимой для выбора символов при шифровании или дешифровании.() - функция проверки исходного текста на чётность. Если количество символов в тексте нечётное, тогда в него добавляется дополнительный символ, необходимый для правильной работы функций шифрования и дешифрования.() - непосредственно функция шифрования, преобразует исходный текст в шифрованный и записывает её в глобальную переменную ResText, готовую к выводу.() - функция дешифрования, которая преобразует шифрованный текст в исходный и записывает её в глобальную переменную ResText, готовую к выводу.() - главная функция программы, представляющая собой меню программы, запускаемое при её старте.

Достоинством программы является достаточно простой интерфейс.


3. Тестирование программы


Проведем контрольный тест программы.

Запуск программы начинается с вывода в окно перечня основных режимов, которые реализует данная система. Главное меню программы представлено на рисунке 2.


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


Для создания таблицы перекодировки необходимо выбрать режим «1». После выбора данного режима на экране появится созданная таблица, а также подтверждение о её создании (рисунок 3).


Рисунок 3 - Создание таблицы перекодировки


Ввод текста осуществляется при выборе режима «2». После ввода текста необходимо нажать клавишу «Enter», и текст запишется в память (рисунок 4).


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


Шифрование текста происходит при выборе режима «3». Также, после шифрования мы получаем результат (рисунок 5).


Рисунок 5 - Шифрование текста


Дешифрование текста осуществляется при выборе режима «4». Как и после шифрования, на экран выводится результат операции дешифрования (рисунок 6).


Рисунок 6 - Дешифрование текста

плейфер шифр текст шифрование

Выход из программы осуществляется при выборе режима «0».

Совокупность проведенных тестов доказывает работоспособность и правильность функционирования программы.


Заключение


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

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

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

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

Литература


1.Стандарт предприятия. Курсовое и дипломное проектирование: СТП ВГКС 1.01-2005. - Введ. 2005-01-01. - Минск: ВГКС, 2004. - 107 с.

2.Национальный Интернет-портал Республики Беларусь [Электронный ресурс] / Википедия - свободная энциклопедия - Режим доступа: #"justify">.Основы алгоритмизации и программирования. Язык СИ. Минск БГУИР 2008. М.П. Батура, В.Л. Бусько, А.Г. Корбит, Т.М. Кривоносова.

Приложение


Листинг - Исходный код программы PLAYFER.EXE


#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

char Al[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя!@#№$;%^:&?*()-_+={}[]\/<>.,~`0123456789";MyText[] = ""; // введенный текстKey[] = ""; // введенный ключR[10][16]; // полученная решеткаResText[] = ""; // полученный текстPust[] = ""; // пустышка

char Resh[10][16]; Alphabet[]="";txt[]="";

void CreateR() //создание и вывод решётки шифрования

{p=0;(int i=0;i<10;i++)(int j=0;j<16;j++)

{Resh[i][j]=Al[p]; p++;}(int i=0;i<10;i++) { printf("\n");(int j=0;j<16;j++) printf("%c ",Resh[i][j]); }

}EditText() //вставка пустышек и проверка текста на чётность

{Len = strlen(MyText);(Len % 2 != 0)(MyText,Pust);

}Encrypt() //шифрование

{

// индексы букв в столбцахind_x1 = 0;

int ind_y1 = 0;ind_x2 = 0;ind_y2 = 0;k = 0;txt[20]="\0";(int d=0; d<strlen(MyText); d++) [d]=MyText[d];(int d=0;d<strlen(ResText);d++)[d]=' ';(strlen(txt)%2!=0)[strlen(txt)]=Pust[0];(k<strlen(txt))

{(int l=0; l<10; l++)(int m=0; m<16; m++)

{(txt[k] == Resh[l][m])

{_x1 = l;_y1 = m;


}(txt[k+1] == Resh[l][m])

{_x2 = l;_y2 =m;

}

}

// Если буквы находятся в одной строке

if (ind_x1 == ind_x2)

{(ind_y1 == 15)

{[k]=Resh[ind_x1][0];[k+1]=Resh[ind_x2][ind_y2+1];

}(ind_y2 == 15)

{[k]=Resh[ind_x1][ind_y1+1];[k+1]=Resh[ind_x2][0];

}

{[k]=Resh[ind_x1][ind_y1+1];[k+1]=Resh[ind_x2][ind_y2+1];

}

}

// Если буквы находятся в одном столбце

if (ind_y1 == ind_y2)


{(ind_x1 == 9)

{[k]=Resh[0][ind_y1];[k+1]=Resh[ind_x2+1][ind_y2];

}(ind_x2 == 9)

{[k]=Resh[ind_x1+1][ind_y1];[k+1]=Resh[0][ind_y2];

}

{[k]=Resh[ind_x1+1][ind_y1];[k+1]=Resh[ind_x2+1][ind_y2];

}

}

// Если буквы находятся в разных строках и разных столбцах

if ((ind_x1 != ind_x2) && (ind_y1 != ind_y2))

{[k]=Resh[ind_x1][ind_y2];[k+1]=Resh[ind_x2][ind_y1];

}= k + 2;

}

}Decrypt() //расшифровка

{


// индексы букв в столбцахind_x1 = 0;

int ind_y1 = 0;ind_x2 = 0;ind_y2 = 0;k = 0;txt[20]="\0";(int d=0; d<strlen(ResText); d++) [d]=ResText[d];(int d=0;d<strlen(txt);d++)[d]=' ';(k<strlen(txt))

{(int n=0; n<10; n++)(int o=0; o<16; o++)

{(txt[k] == Resh[n][o])

{_x1 = n;_y1 = o;

}(txt[k+1] == Resh[n][o])

{_x2 = n;_y2 = o;

}

}

// Если буквы находятся в одной строке

if (ind_x1 == ind_x2)


{(ind_y1 == 0)

{[k]=Resh[ind_x1][15];[k+1]=Resh[ind_x2][ind_y2-1];

}(ind_y2 == 0)

{[k]=Resh[ind_x1][ind_y1-1];[k+1]=Resh[ind_x2][15];

}

{[k]=Resh[ind_x1][ind_y1-1];[k+1]=Resh[ind_x2][ind_y2-1];

}

}

// Если буквы находятся в одном столбце

if (ind_y1 == ind_y2)

{(ind_x1 == 0)

{[k]=Resh[9][ind_y1];[k+1]=Resh[ind_x2-1][ind_y2];

}(ind_x2 == 0)

{


ResText[k]=Resh[ind_x1-1][ind_y1];[k+1]=Resh[9][ind_y2];

}

{[k]=Resh[ind_x1-1][ind_y1];[k+1]=Resh[ind_x2-1][ind_y2];

}

}

// Если буквы находятся в разных строках и разных столбцах

if ((ind_x1 != ind_x2) && (ind_y1 != ind_y2))

{[k]=Resh[ind_x1][ind_y2];[k+1]=Resh[ind_x2][ind_y1];

}= k + 2;

}

}main()

{d;:("\n\nVvedite komandu:\n1-Sozdanie tablici perekodirovki\n2-Vvod teksta\n3-Shivrovanie i vivod\n4-Deshifrovanie i vivod\n0-Vihod\n");("%d",&d);(d) {1:();("\n DONE!");


goto L1;2:("Vvedite tekst: ");("%s",&MyText);EditText();L1;3:();("\n%s",ResText);L1;4:();("\n%s",ResText);L1;:;

}

}



МИНИСТЕРСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ РЕСПУБЛИКИ БЕЛАРУСЬ «ВЫСШИЙ ГОСУДАРСТВЕННЫЙ КОЛЛЕДЖ СВЯЗИ» ФАКУЛЬТЕТ ЭЛЕКТРОСВЯЗИ КАФЕДРА ПРОГРАММНОГО ОБ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ