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

 

Содержание


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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


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


.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 - элементы массива, находящиеся в отводящей последовательности.


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


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



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


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


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


№ вариантаДлина ключа REGОтводящая последовательностьСпособ ввода символов ключа2170,1,2,3,7,12,14Вводятся пользователем как параметр командной строки при запуске программы

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



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

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

#include <iostream>

#include <stdio.h>

#include <conio.h>namespace std;main()

{(0, "");*input, *output;int reglen=17, buflen=1000, inpathlen=1001, outpathlen=1001;reg[reglen], regbuf, buffer[buflen], i, j, counter=0;inpath[inpathlen], outpath[outpathlen], c;("Введите путь к файлу, который будет зашифрован (до 1000 символов):\n");

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

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

};[i]='\0';("\n Введите путь хранения зашифрованного файла (до 1000 символов):\n");

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

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

};[i]='\0';=fopen(inpath, "r");=fopen(outpath, "a+");(input==NULL)

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

}if (output==NULL)

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

}

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

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

{=getche();[i]=static_cast<int>(c);(i==reglen-1) {break;};

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

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

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

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

{[i]=buffer[i]^reg[0];=reg[0]^reg[1]^reg[2]^reg[3]^reg[7]^reg[12]^reg[14];(j=0; j<reglen; j++)

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

};[reglen]=regbuf;

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

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

};

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

};


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



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


#include <iostream>

#include <stdio.h>

#include <conio.h>namespace std;main()

{(0, "");*input, *output;int reglen=17, buflen=1000, inpathlen=1001, outpathlen=1001;reg[reglen], regbuf, buffer[buflen], i, j, counter=0;inpath[inpathlen], outpath[outpathlen], c;("Введите путь к файлу, который был зашифрован (до 1000 символов):\n");

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

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

};[i]='\0';("\n Введите путь хранения дешифрованного файла (до 1000 символов):\n");

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

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

};[i]='\0';=fopen(inpath, "r");=fopen(outpath, "a+");(input==NULL)

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

}if (output==NULL)

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

}

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

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

{=getche();[i]=static_cast<int>(c);(i==reglen-1) {break;};

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

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

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

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

{[i]=buffer[i]^reg[0];=reg[0]^reg[1]^reg[2]^reg[3]^reg[7]^reg[12]^reg[14];(j=0; j<reglen; j++)

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

};[reglen]=regbuf;

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

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

};

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

};


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


В нашу задачу не входит обосновать какое-либо из существующих или предложить новое понимание этого термина. В аспекте настоящего исследования более существенно попытаться определить его отношение к некоторым другим базовым понятиям, в частности к понятию языка. Здесь можно выделить два подхода. Первый: язык мыслится как некоторая первичная сущность, которая получает материальное инобытие, овеществляясь в ТЕКСТЕ (См. определение М.-А.-К. Холидея: "Текст - это язык в действии" - Прим. Лотмана). При всем разнообразии аспектов и подходов здесь выделяется общая презумпция: язык предшествует ТЕКСТУ, ТЕКСТ порождается языком… Даже в тех случаях, когда подчеркивается, что именно ТЕКСТ составляет данную лингвисту реальность и что любое изучение языка отправляется от ТЕКСТА, речь идет об эвристической, а не онтологической последовательности: поскольку в само понятие ТЕКСТА включена осмысленность, ТЕКСТ по своей природе подразумевает определенную закодированность.


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


іW€ЊЉUЋЏЃ„-FЉЌJ.Ћ›ѓ'Ѓч-+џ…;ћ:3>щњ=-ЋN?9ЋЊя љэ!…€Ѓ< ‰!7:д%%‰ю8#Ѓ27™Џ,…з8<*.6W'Љ73*>2 >C*$Ѓ›яњЃ3‡‰&ьйҐп5˜ Џ…Љ8A„0ћ!ЉЉ&=„˜R>љђ†ЊЌ19‡21Ќж†љ*дљ‡˜&Ќ1Ћ-ЃЃу-%7ѓ‹љ ‹;ѓг-;,<њ=4‹65F›љ?Fѓ1.;),ѓњ.\;е#ћ%=5Ќ„.B‚љ7F (,<1%AЏЃђ:') (йC€X/њ '>‚/Њ…%ы=г-њЏ!*.-H*7-:€BEЁ8!"<л8"'ћG*72†"…2њй-)„E/-.%?(ечі&,. AZ.>Ќ-ч63/Ђ8ћB7њ™б‡Ђ*!џ8ќG&<-ЂџЂѓќ›P&†%0љЏћдM=‹Ѓћ ?т,5:) &=3[29Ђ/#Ћ$Ђ-ђ_…+ђѓ…ђ-Yжљ‚… >ќЋЃ-Zќ[ЎЇІ Ѕ[г8аб)4/2<$‰%‡'\DJЈXJсЄ"*;˜;[эCћ*%ЏмыжЂџ‡м;‰"1\,N>€њ 495!.муDCµ 7GцЇ›;„ќ"ЏгJч‡ћп-Љ,5г‰".‡66990њ*ЌX?!ѓ&9‹4) п&H8‹Ѓ5$‚ќ,м Љ†!Њ*м?-:Ќ&:›"€˜R!=ќ б˜:1?7Ћ›.ьN)›€Љ]<ђЋ„'…+$6љR»ўўѕ§_юі Ёя1" 0‹ђ<9‚ѓд.‚'‰-њгL±&:,T!G€&5Tћ?™Љ4%Yъ/6‰-$RЊЋ.Џ!)>„ 'Њ;. ЂTг: ѓ0\-ќ‚ЋмЇѕы„.„ /=‚ђ6:џд>Љ!‡џ2V?"3&/37(л5&џ"*+‹==L…г'њ*V!™)#K-&‚ђ)џ;V:&2Џ-[;76˜1†‚Џђ>?J€%сј« лFќђ‰рЃ<'*в^3"љ<ЉЂ'Ћљ„‹+;Z\б‹‚]‰.њ9™џ<џљ‹Њ4/э'8-Ќ››9ЂЊ™ 0?Ѓ€€KP%ѓ819Њ˜!7г8@‡:21M/8„-8,6V№±±µ®TЌ€-‹7Њ›IЉ3ѓ1Ђѓџ'€… ьеЇ§¶ѕB?&뉙-2й74ќ*>)'х,)?Ђ‰/,6480Џ‰ю/Ђ„/0љ&!Ќ1A?+(%=-…Њ‚Ђ…‹6‡-+\х®1‡-4=њЏ„‚/'ЏVO›Џ5.ЉG·јSќ/!'5


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


В нашу задачу не входит обосновать какое-либо из существующих или предложить новое понимание этого термина. В аспекте настоящего исследования более существенно попытаться определить его отношение к некоторым другим базовым понятиям, в частности к понятию языка. Здесь можно выделить два подхода. Первый: язык мыслится как некоторая первичная сущность, которая получает материальное инобытие, овеществляясь в ТЕКСТЕ (См. определение М.-А.-К. Холидея: "Текст - это язык в действии" - Прим. Лотмана). При всем разнообразии аспектов и подходов здесь выделяется общая презумпция: язык предшествует ТЕКСТУ, ТЕКСТ порождается языком… Даже в тех случаях, когда подчеркивается, что именно ТЕКСТ составляет данную лингвисту реальность и что любое изучение языка отправляется от ТЕКСТА, речь идет об эвристической, а не онтологической последовательности: поскольку в само понятие ТЕКСТА включена осмысленность, ТЕКСТ по своей природе подразумевает определенную закодированность.


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




Содержание 1. Цель работы . Требования к программам шифрования и дешифрования .1 Требования к формированию файлов . Терминология и метод шифрова

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

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

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

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

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