Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема курсовой работы




На КУРСОВую РаБОТу

КУРСОВаЯ РАБОТА

по дисциплине «Технологии программирования»

 

выполнил: проверилА:
Студент группы УБиТ-10 Гулина Ирина Григорьевна
Кисель Николай Николаевич  

 

Днепропетровск

Министерство образования и науки, молодежи и спорта Украины

Государственное высшее учебное заведение «Национальный горный университет»

 
 


ИНСТИТУТ ЭЛЕКТРОЭНЕРГЕТИКИ

Факультет информационных технологий

 

 

Кафедра электроники и вычислительной техники

 

ЗАДАНие

по дисциплине «Технологии программирования»

 

Группа: УБиТ-10

Студент: Кисель Николай Николаевич

 

«Разработка программы шифрования и дешифрования текста методом замены»

 

Этап Дата Отметка выполнения
q Выдача задания    
q Контроль функционирования программ    
q Защита курсовой работы    
Задание выдала: Гулина Ирина Григорьевна
Задание приняла: Гулина Ирина Григорьевна
Задание выполнил: Кисель Николай Николаевич

 

СОДЕРЖАНИЕ

 

Введение. 4

1.Задание. 5

2.Таблица символьных имен. 6

3.Блок-схема программы шифрования. 7

4.Блок-схема программы дешифрования. 10

5.Текст программы шифрования. 13

6.Текст программы дешифрования. 15

7.Исходный текст. 17

8.Зашифрованный текст. 18

9.Дешифрованный текст. 19

Заключение. 20

Список используемой литературы.. 21

 

ВВЕДЕНИЕ

 

Данная работа посвящена разработке программы шифрования и дешифрования текста методом простой замены (метод шифрования Вижинера), а также закреплению знаний и умений программирования на языке C/C++.

Метод шифрования заключается в том, что отдельные части исходного текста заменяются на какие-либо другие буквы, числа, символы. При этом замена осуществляется так, что бы потом по шифрованному сообщению можно было однозначно восстановить переданное сообщение. Чтобы зашифровать или расшифровать символ используется операция XOR (побитовое исключающее ИЛИ).

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

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

 

1.ЗАДАНИЕ

 

Вариант №59

B1 B2 R P
         

 

 

Согласно варианту работы, требования к работе являются такими:

Ø В1=2 – текст ключа вводится пользователем как параметр командной строки при запуске программы.

Ø В2=2 – текст ключа вводится пользователем программы дешифрования как параметр командной строки при запуске программы.

Ø R=2 – все символы ключа преобразуются в заглавные, а символы исходного текста в прописные.

Ø При обратной подстановке (P=2) символы ключа располагаются в обратном порядке

 

 

2.ТАБЛИЦА СИМВОЛЬНЫХ ИМЕН

 

Математическое имя Имя в программе Смысловое значение Переменная
Тип Значение
in in Указатель на входной файл FILE Указатель
out out Указатель на выходной файл FILE Указатель
n n Длина ключа Целый Перем.
j j Номер символа в ключе Целый Перем.
i i Счетчик(начало, конец файла) Целый Перем.
temp temp Символ исходного файла, зашифрованый символ Символьн. Входное
key[1] key[1] Ключ Символьн. Входное

 

3.БЛОК-СХЕМА ПРОГРАММЫ ШИФРОВАНИЯ

 

4.БЛОК-СХЕМА ПРОГРАММЫ ДЕШИФРОВАНИЯ

 

 

 

 

 

5.ТЕКСТ ПРОГРАММЫ ШИФРОВАНИЯ

 

#include<iostream>

#include <tchar.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <string.h>

 

using namespace std;

 

void main(intargc, char **key){

FILE *in = fopen("in.txt", "rb");

FILE *out = fopen("out.txt", "wb");

 

if(!in){

cout<<"\nThere is no file for coding \"in.txt\".";

cout<<"\n\nPres any key for exit...";

system("pause");

exit(1);

}

 

int i,j,n = strlen(key[1]);

char temp;

 

for (i = 0; key[1][i]; i++){

if(key[1][i] >= -32 && key[1][i] <= -1) key[1][i] -= 32;

if(key[1][i] == -65 || key[1][i] == -72 || key[1][i] == -70) key[1][i] -= 16;

if(key[1][i] >=97 && key[1][i] <= 122) key[1][i] -= 32;

}

strrev(key[1]);

for(i = 0; ((temp = fgetc(in)) &&!feof(in)); i++){

if(temp <= -33 && temp >= -64) temp += 32;

if(temp == -81 || temp == -88 || temp == -86) temp += 16;

if(temp <= 90 && temp >= 65) temp += 32;

 

j = fmod((float)i,(float)n);

temp = key[1][j]^temp;

 

fputc(temp,out);

}

 

fclose(in);

fclose(out);

cout<<"The text was coded and put to \"out.txt\""<<endl;

 

system("pause");

}

 

 

6.ТЕКСТ ПРОГРАММЫ ДЕШИФРОВАНИЯ

#include <iostream>

#include <tchar.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <string.h>

 

using namespace std;

 

void main(intargc, char **key){

FILE *in = fopen("out.txt", "rb");

FILE *out = fopen("out_decoded.txt", "wb");

 

if(!in){

cout<<"\nThere is no file for coding \"in.txt\".";

cout<<"\n\nPres any key for exit...";

system("pause");

exit(1);

}

 

int i,j,n = strlen(key[1]);

char temp;

 

for (i = 0; key[1][i]; i++){

if(key[1][i] >= -32 && key[1][i] <= -1) key[1][i] -= 32;

if(key[1][i] == -65 || key[1][i] == -72 || key[1][i] == -70);

if(key[1][i] >=97 && key[1][i] <= 122) key[1][i] -= 32;

}

strrev(key[1]);

 

for(i = 0; ((temp = fgetc(in)) &&!feof(in)); i++){

j = fmod((float)i,(float)n);

temp = key[1][j]^temp;

 

fputc(temp,out);

}

 

fclose(in);

fclose(out);

cout<<"The text was decoded and put to \"out_2.txt\""<<endl;

 

system("pause");

}

 

 

7.ИСХОДНЫЙ ТЕКСТ

 

ЩУКА

На Щуку подан в суд донос,

Что от нее житья в пруде не стало;

Улик представлен целый воз,

И виноватую, как надлежало,

На суд в большой лохани принесли.

Судьи невдалеке сбирались;

На ближнем их лугу пасли;

Однако ж имена в архиве их остались:

То были два Осла,

Две Клячи старые, да два иль три Козла;

Для должного ж в порядке дел надзора

Им придана была Лиса за Прокурора.

И слух между народа шел,

Что Щука Лисыньке снабжала рыбный стол;

Со всем тем, не было в судьях лицеприязни,

И то сказать, что Щукиных проказ

Удобства не было закрыть на этот раз.

Так делать нечего: пришло писать указ,

Чтоб виноватую предать позорной казни

И, в страх другим, повесить на суку.

"Почтенные судьи!- Лиса тут приступила,-

Повесить мало, я б ей казнь определила,

Какой не видано у нас здесь на веку:

Чтоб было впредь плутам и страшно, и опасно -

Так утопить ее в реке".- "Прекрасно!" -

Кричат судьи. На том решили все согласно,

И Щуку бросили - в реку!

8.ЗАШИФРОВАННЫЙ ТЕКСТ

 

¶Ў№HAґҐk ¶ЎЄe¤·Ў«ґe©yґёЅeЇ·ЁҐЁiFSІ№·eҐ«e¦ј kї­№Ґєk»e¤©¶Їјe¦јeє«Ґ ·~FS¶ ±Їk¶µ®Ѕґ№№§ јЁkЇ ўk»«uHA±e©±ЁҐ»Ґ№Є»gyЇ«іe¦№Ў јЈ«І«gTO¦№eєЄЎk»eЄ·®·Ў«ўy®ҐҐ¦±e¤©­¦јґ ±kFSґёЅ№ЈyЁ®»Ў«І Ўјeєё­»№®ЈЁ№pTO¦№eЄІ­­ґ §y­ѕy®ёє¶k¶ҐєІ­pTOҐЅЁ«і«kїeЈµ ¦№e©yҐ»­©јeЈeҐЁ·«І­єҐFS·Ґy¤°І­kЅ§«y«єІҐgTOЇ» kі®ґ®­kЁ·«©ѕ®ueЇ№eЇ»Ґk±®·y·»±eЎ·ў №~FSЎ ¦eЇ·®­ґ«Ё·e­y§k¶«»¦ЎЎјeЇј®kґҐЇѕ«»№HA±©k¶µЈЅҐ¦№eЄў®«y®ЈЁҐkѕҐk¶µҐі¶»·µ«wHA±eєІ¶ѕy©®їЎёyЁ«©«Ї№eіј®gTOј««k ¶Ў№e ±ґ°ґ№ЎјeєґҐЄїҐ №e»ў¤¦ўkЁ·ҐІ~FSґҐy§єј©k«§ue¦јeЄў®Ґy§kЁ¶ЇҐєѕy®ЈЇ ¤©­ґѕЁЈuHA±e№·eєіҐ№··ueј««k ¶Ў±Ё°e¤©«Ў№ўFS¶Ї·¤є«§«yЁ®y¤°І«kѕҐЎ©ѕ№Ґe¦№e¶««№yµ«ѕkFS·«іeЇј®««№kґ јј¦Ґce¤©­іІ«k¶­є№··y¶Ў№ўgTOј««Єy§Јґ«©№·ё§e¤© Ї№··yЄҐѕ«»ґ«ўyЇ«ѕЁЈTOЈue©yґ№©ҐѕyЎ»Є¦Јµik¶«©јґЈ«№kґҐkЁ¶ЎЄkFSg¤·І№јЁ¦ў kЁ¶ЇҐ­jte ±ґ«y·ё«e¤©­є«¶¤±®«uhFSЄҐ» є±··y©«І«gyєkёe®°eЎ№ў¦ҐeҐ¶µ®Ѕ ±®«uHAіҐЎ·kґ k»­Ї№ЁҐy¶kґҐєyўЇјґ·yЁ«y§®і¶qTOј««Єy¤°І«k»Є»јЎ·yЄ Є·«µeЈyґ№©Ґіґ«gy­k·Є«ЁЁҐyhFS·«іeё««¤±··y ®y§k© Ўјgetei¶µ®іµ«ЁЁҐxgktHAіµЈ®Ґ№yґёЅ№Јwe¦№e№·©k© і±®Јy§єјeє·¦ №ґ¦·iFS­k ¶ЎЄeЄ©«є±®Јyhk»e»јЇёx

 

 

9.ДЕШИФРОВАННЫЙ ТЕКСТ

 

щука

на щуку подан в суд донос,

что от нее житья в пруде не стало;

улик представлен целый воз,

и виноватую, как надлежало,

на суд в большой лохани принесли.

судьи невдалеке сбирались;

на ближнем их лугу пасли;

однако ж имена в архиве их остались:

то были два осла,

две клячи старые, да два иль три козла;

для должного ж в порядке дел надзора

им придана была лиса за прокурора.

и слух между народа шел,

что щука лисыньке снабжала рыбный стол;

со всем тем, не было в судьях лицеприязни,

и то сказать, что щукиных проказ

удобства не было закрыть на этот раз.

так делать нечего: пришло писать указ,

чтоб виноватую предать позорной казни

и, в страх другим, повесить на суку.

"почтенные судьи!- лиса тут приступила,-

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

какой не видано у нас здесь на веку:

чтоб было впредь плутам и страшно, и опасно -

так утопить ее в реке".- "прекрасно!" -

кричат судьи. на том решили все согласно,

и щуку бросили - в реку!

ЗАКЛЮЧЕНИЕ

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

Мне удалось не только закрепить свои знания по языку программирования C\C++, а еще и пополнить их запас. Воспользовавшись дополнительной литературой, я освоил и успешно использовал такие функции библиотеки string.h, как strlen и srtrev. Узнал о том, каким образом можно переводить прописные символы в заглавные, и наоборот, используя уникальность таблицы с ASCII-кодами. А также, понял, каким образом работает побитовая операция XOR, при помощи которой шифровал свой текст.

 

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

 

1. Б. Керниган, Д. Ричи. «Язык программирования Си»,Вильямс,2009

2. В. В. Подбельский, С. С. Фомин «Программирование на языке Си»,Финансы и статистика,2005

3. С. Прата «Язык программирования C. Лекции и упражнения» Вильямс, 2006

4. А. Александреску. «Современное проектирование на С++», Вильямс, 2004

 




Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 594; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.069 сек.