Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursak_title.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
459.74 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ, НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

ГВУЗ «Национальный горный университет»

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

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

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

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

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

ВЫПОЛНИЛ ПРОВЕРИЛ

студент группы БСит-11-1

Богиня И.Г. ___________

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

2012

МИНИСТЕРСТВО ОБРАЗОВАНИЯ, НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

ГВУЗ «Национальный горный университет»

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

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

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

ЗАДАНИЕ

НА КУРСОВУЮ РАБОТУ

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

Специальность Безопасность информационных и коммуникационных систем

Группа БСит-11-1

Студент Богиня И.Г.

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

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

Этап

Дата

Отметка выполнения

  • Выдача задания

  • Контроль функционирования программ

  • Защита курсовой работы

Задание выдала _____________________

Задание принял студент _____________________

Содержание:

  1. Цель работы

  2. Требования к программам шифрования и дешифрования………3

    1. Требования к формированию файлов………………………..3

  3. Терминология и метод шифрования………………………………...3

3.1 Шифрование методом простой замены………………………3

3.2. Дешифрование шифротекста………………………………….5

4. Вариант задания……………………………………………………......5

5. Укрупненная структурная схема программы шифрования……...6

5.1. Код программы шифрования………………………………….6

6. Укрупненная структурная схема программы дешифрования…....8

6.1 Код программы дешифрования………………………………..9

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

7.1. Зашифрованный текст…………………………………………...11

7.2. Дешифрованный текст……………………………………….…..11

8. Скриншоты выполнения программ……………………………....…12

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

1. Цель работы

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

2. Требования к программам шифрования и дешифрования

Программы шифрования и дешифрования текста должны являться самостоятельными и независимыми программными единицами, разработанными на языке программирования C/C++. Разработка программ должна выполняться как консольное приложение при использовании компиляторов MS Visual C++ или C++ Builder, или как DOS-программа, при разработке с использованием компиляторов BC++ или ТС++.

2.1. Требования к формированию файлов

Текстовый файл с исходным текстом должен содержать не менее 200 ASCII символов произвольного осмысленного текста и может формироваться любым текстовым редактором. Текст должен быть расположенным по строкам не более 80 символов.

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

3. Терминология и метод шифрования

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

Шифрование – процесс применения шифра. В результате шифрования исходный текст преобразуется в шифротекст.

Дешифрование – процесс обратный шифрованию, то есть преобразование шифрованного сообщения в исходный текст.

Ключ – некая последовательность символов, определяющая преобразование исходного текста в шифротекст.

3.1 Шифрование методом простой замены

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

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

Суть метода. Исходный текст задается набором символов. Каждый символ открытого текста определяется его ANSII-кодом Si, i=0,m.

Пользователь программы шифрования задаёт начальный символьный вектор (ключ шифрования) длиной n, указанный в задании. Этот набор символов преобразуется в целочисленный вектор REG, каждый элемент которого определяется ANSII-кодом заданных символов.

Пользователь программы шифрования также задаёт т.н. отводящую последовательность – номера элементов массива REG, которые указаны в вариантах задания к курсовой работе.

Над каждый ANSII-кодом символа текста Si проводится операция

где:

Текущий ANSII-код символа гаммы определяется числом, находящимся в REG0.

Элемент вектора REGn рассчитывается по формуле:

где REG0j – элементы массива, находящиеся в отводящей последовательности.

3.2. Дешифрование шифротекста

Дешифрование шифротекста осуществляется на основе битовой операции , для которой справедливо

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

4. Вариант задания

Данная работа была выполнена по варианту задания №2:

№ варианта

Длина ключа REG

Отводящая последовательность

Способ ввода символов ключа

2

17

0,1,2,3,7,12,14

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

5. Укрупненная структурная схема программы шифрования

5.1. Код программы шифрования

#include <iostream>

#include <stdio.h>

#include <conio.h>

using namespace std;

void main()

{

setlocale(0, "");

FILE *input, *output;

const int reglen=17, buflen=1000, inpathlen=1001, outpathlen=1001;

int reg[reglen], regbuf, buffer[buflen], i, j, counter=0;

char inpath[inpathlen], outpath[outpathlen], c;

printf("Введите путь к файлу, который будет зашифрован (до 1000 символов):\n");

for (i=0; i<inpathlen; i++)

{

inpath[i]=getche();

if (inpath[i]==13) {break;};

};

inpath[i]='\0';

printf("\nВведите путь хранения зашифрованного файла (до 1000 символов):\n");

for (i=0; i<outpathlen; i++)

{

outpath[i]=getche();

if (outpath[i]==13) {break;};

};

outpath[i]='\0';

input=fopen(inpath, "r");

output=fopen(outpath, "a+");

if (input==NULL)

{

printf("\nОшибка при открытии файла");

}

else if (output==NULL)

{

printf("\nОшибка при создании файла");

}

else

{

printf("\n\nВведите ключ из 17 символов (в конце ввода нажмите Enter):\n");

for (i=0; i<reglen; i++)

{

c=getche();

reg[i]=static_cast<int>(c);

if (i==reglen-1) {break;};

};

printf("\nИдёт обработка файла...");

for (i=0; i<buflen; i++)

{

if (!feof(input)) {fscanf(input, "%c", &buffer[i]); counter++;};

};

for (i=0; i<counter; i++)

{

buffer[i]=buffer[i]^reg[0];

regbuf=reg[0]^reg[1]^reg[2]^reg[3]^reg[7]^reg[12]^reg[14];

for (j=0; j<reglen; j++)

{

reg[j]=reg[j+1];

};

reg[reglen]=regbuf;

};

for (i=0; i<counter-1; i++)

{

fprintf(output, "%c", buffer[i]);

};

};

printf("\nВыполнено.");

fcloseall();

getch();

};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]