96953

Создание действующей программы шифрования текста на языке C/C++

Курсовая

Информатика, кибернетика и программирование

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

Русский

2015-10-12

531.5 KB

59 чел.

Министерство образования и науки Украины

Государственное высшее учебное заведение

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

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

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

Кафедра безопасности информации и телекоммуникаций

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

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

выполнил(а)

проверил

Студент группы

_____________   

_____________   

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

2014

Министерство образования и науки Украины

Государственное высшее учебное заведение

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

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

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

Кафедра безопасности информации и телекоммуникаций

ЗАДАНие

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

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

Специальность____________________________

Группа ___________________________________

Студент___________________________________

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

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Этап

Дата

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

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

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

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

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

Задание принял                                                      _____________

Содержание

 

Цель работы

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

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

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

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

рис.1

 Вариант работы

B1

B2

R

P

54

3

3

1

2

Соответственно варианту работы, дополнительные требования к работе есть такими:

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

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

#include <iostream>

#include <conio.h>

#include <algorithm>

#include <fstream>

#include <string>

using namespace std;

void main()

{

setlocale(LC_ALL,"Russian");

string Key, RepeatKey, Text, Cipher; // Ключ, Ключ с повторением, исходный текст

 //Чтение текстового файла и запись его содержимого в строку для исходного текста

 ifstream F,P;

F.open("C:\\Vigenere\\Input.txt",ios::in);

 if (F.is_open())

       while (!F.eof())

         getline (F,Text);

       F.close();

 

       cout <<"Текст из файла: "<<endl<<Text<<endl;

 //Чтение текстового файла и запись его содержимого в строку для ключа

 P.open("C:\\Vigenere\\Key.txt",ios::in);

P >> Key;

P.close();

cout <<"Ключ из файла: "<<endl<<Key<<endl;

 //Изменение регистра исходного текста и ключа (способ R=1)

 transform(Text.begin(), Text.end(), Text.begin(), ::toupper);

transform(Key.begin(), Key.end(), Key.begin(), ::tolower);

 cout <<"Измененный регистр текста и ключа (способ R=1):"<<endl;

cout <<"Исходный текст:"<<endl<<Text<<endl;

 cout <<"Ключ:"          <<endl<<Key <<endl;

 //Перевернем ключ задом на перед

 //в соответствии со способом (P=2)

 reverse(Key.begin(),Key.end());

 cout <<"Ключ задом на перед (способ P=2): "<<endl<<Key<<endl;

 //Ключ с повторением 

 for(size_t i=0; i<Text.size(); i++)

{

 RepeatKey += Key[i % Key.size()];

}

cout<<"Ключ с повторением: "<<endl<<RepeatKey<<endl;

 //Шифрование исходного текста

      //по формуле: С = T + K (mod 26) , где С - зашифрованный символ, T - символ исходного    

 т  екста, K - символ ключа

      for(int i=0; i< Text.size(); i++)

{

 if(Text[i]==' ')

 {

  Cipher += ' ';

 }

 else

 {

     Cipher += (char)( ( ( (int)Text[i] ) + ( (int)RepeatKey[i] - 32) ) % 26) + 65;

 }

}

cout<<"Зашифрованный текст: "<<endl<<Cipher<<endl;

 //Запись зашифрованного текста в файл

ofstream L;

 L.open("C:\\Vigenere\\Output.txt",ios::out);

L << Cipher;

 L.close();

_getch(); }

Алгоритм программы шифрования

                      

          

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

#include <iostream>

#include <conio.h>

#include <algorithm>

#include <fstream>

#include <string>

using namespace std;

void main()

{

setlocale(LC_ALL,"Russian");

string Key, RepeatKey, Cipher, DeCipher; // Ключ, Ключ с повторением, зашифрованный текст, расшифрованный текст

 //Чтение текстового файла и запись его содержимого в строку для зашифрованного текста

 fstream F,P,L;

F.open("C:\\Vigenere\\Output.txt",ios::in);

   if (F.is_open())

     while (!F.eof())

         getline (F,Cipher);

   F.close();

cout <<"Текст из файла: "<<endl<<Cipher<<endl;

 //Чтение текстового файла и запись его содержимого в строку для ключа

 P.open("C:\\Vigenere\\DeKey.txt",ios::in);

P >> Key;

P.close();

cout <<"Ключ из файла: "<<endl<<Key<<endl;

 //(Способ R=1)

 transform(Key.begin(), Key.end(), Key.begin(), ::tolower);

 cout <<"Ключ переведенный в прописные символы: "<<endl<<Key<<endl;

 //Перевернем ключ задом на перед

 //в соответствии со способом (P=2)

 reverse(Key.begin(),Key.end());

 cout <<"Ключ задом на перед (способ P=2): "<<endl<<Key<<endl;

 //Ключ с повторением 

 for(size_t i=0; i<Cipher.size(); i++)

{

 RepeatKey += Key[i % Key.size()];

}

cout<<"Ключ с повторением: "<<endl<<RepeatKey<<endl;

 //Расшифровка зашифрованного текста

 //по формуле: T = C - K + 26 (mod 26) , где С - зашифрованный символ,

         T - символ исходного текста, K - символ ключа

 for(int i=0; i< Cipher.size(); i++)

{

 if(Cipher[i] == ' ')

 {

  DeCipher += ' ';

 }

 else

 {

 DeCipher += (char)( ( (int)Cipher[i] - ( (int)RepeatKey[i] - 32 ) + 26 ) % 26) + 65;

 }

}

cout<<"Зашифрованный текст: "<<endl<<DeCipher<<endl;

 //Запись зашифрованного текста в файл

L.open("C:\\Vigenere\\Decipher.txt",ios::out);

L << DeCipher;

L.close();

_getch();

}

Алгоритм программы дешифрования

                          

        

Содержание файла с исходным текстом

The artist is the creator of beautiful things To reveal art and conceal the artist is arts aim The critic is he who can translate into another manner or a new material his impression of beautiful things The highest as the lowest form of criticism is a mode of autobiography Those who find ugly meanings in beautiful things are corrupt without being charming This is a fault Those who find beautiful meanings in beautiful things are the cultivated For these there is hope They are the elect to whom beautiful things mean only beauty There is no such thing as a moral or an immoral book. Books are well written or badly written That is all The nineteenth century dislike of realism is the rage of Caliban seeing his own face in a glass

Содержание файла с шифротекстом

XYI EXBDWK VW BCI GEIGBJV SS HMVYKMSYR OLZRTW BJ IIIIGT EIX ETL GFRPIGT XYI EXBDWK VW IMXJ NMS OLV PVOBDG MF NM AYS GGV XIEAWRIOI MAXU VRFXUIX HEERRV WM R AIC HEKIEMGT LZW MSXMIJWVST JJ FREABDJLP XNQIKJ GLK CMXLRWZ VW XUI TJAVWG LWMQ SS IZDXZGVWS DW E QULZ FJ EABJFZSTVGXCC XUSYM AYS JOVY LKYC UZEEMAKY DR FREABDJLP XNQIKJ NVK XSIVHTZ RMKLBYZ WIZRT IPVVDMAK BCMJ VW I JRYYX BCSJI ANW JZRQ HMVYKMSYR HIRRVRMA ME OIGCOMWYY ZPDRXW EXM XYI GATOMMEGIJ ASI GLKAZ KLRVK DW LBTK OLVC EXM XYI IRMXX XB CPJQ FREABDJLP XNQIKJ ZIGV SEPL HMVYKC XNMMI MF TW WLGU ZPDRX NW I QFVNP WM RR MSUJVRP FUWFL FBSQA EII AKTG NVVXZMI FV FGLGC AEMZBZR XUEZ DW EYP BCI RVRKBZIEXU IMIXLVL JQNPZOR UN VVEYMYU MJ GLK MEXI SL XECMOET NIVMAK PDW SJR NVGV VR I KCEFW

Содержание файла с дешифрованным текстом

THE ARTIST IS THE CREATOR OF BEAUTIFUL THINGS TO REVEAL ART AND CONCEAL THE ARTIST IS ARTS AIM THE CRITIC IS HE WHO CAN TRANSLATE INTO ANOTHER MANNER OR A NEW MATERIAL HIS IMPRESSION OF BEAUTIFUL THINGS THE HIGHEST AS THE LOWEST FORM OF CRITICISM IS A MODE OF AUTOBIOGRAPHY THOSE WHO FIND UGLY MEANINGS IN BEAUTIFUL THINGS ARE CORRUPT WITHOUT BEING CHARMING THIS IS A FAULT THOSE WHO FIND BEAUTIFUL MEANINGS IN BEAUTIFUL THINGS ARE THE CULTIVATED FOR THESE THERE IS HOPE THEY ARE THE ELECT TO WHOM BEAUTIFUL THINGS MEAN ONLY BEAUTY THERE IS NO SUCH THING AS A MORAL OR AN IMMORAL BOOKH BOOKS ARE WELL WRITTEN OR BADLY WRITTEN THAT IS ALL THE NINETEENTH CENTURY DISLIKE OF REALISM IS THE RAGE OF CALIBAN SEEING HIS OWN FACE IN A GLASS

Пример работы программы шифрования

Пример работы программы дешифрования

                                  


     Input.txt

             ПШ

   Output.txt

    Desifr.txt

               ПД

      КЛ


 

А также другие работы, которые могут Вас заинтересовать

42149. ИЗУЧЕНИЕ ПРОЦЕССОВ ЗАРЯДА И РАЗРЯДА КОНДЕНСАТОРА 202.53 KB
  Изучение закономерностей заряда и разряда конденсатора.магазина сопротивлений МС магазин емкостей MEисточник питания ИП звуковой генератор ГЗ электронный осциллограф блок с конденсаторами. ПОСТАНОВКА ЗАДАЧИ Принципиальная электрическая схема для наблюдения процессов заряда и разряда конденсатора изображена на рис.
42150. ИЗУЧЕНИЕ РАБОТЫ ЭЛЕКТРОННОГО ОСЦИЛЛОГРАФА 2.06 MB
  ПОСТАНОВКА ЗАДАЧИ Назначение электронного осциллографа. Универсальные измерительные приборы предназначенные для исследования электронных процессов с помощью графического их воспроизведения на экране электроннолучевой трубки называются электронными осциллографами. Высокая чувствительность осциллографа позволяет изучать очень слабые колебания напряжения а большое входное сопротивление исключает влияние осциллографа на режим цепей к которым он подключается.
42151. СЛОЖЕНИЕ ГАРМОНИЧЕСКИХ КОЛЕБАНИЙ 18.75 MB
  Под сложением колебаний понимают нахождение закона описывающего колебания системы в тех случаях когда эта система одновременно участвует в нескольких колебательных процессах. Различают два предельных случая: сложение колебаний одинакового направления и сложение взаимно перпендикулярных колебаний. Сложение двух одинаково направленных гармонических колебаний.
42152. ИЗУЧЕНИЕ РЕЛАКСАЦИОННОГО ГЕНЕРАТОРА 107.5 KB
  Если напряжение на электродах лампы U меньше напряжения зажигания потенциал зажигания U3 т. В этом случае сопротивление лампы RЛ бесконечно велико. Идеализированная вольтамперная характеристика неоновой лампы имеет вид представленный на рис. Связь между током лампы и напряжением как это видно из графика может быть линейной и записана в виде: ...
42153. МНОЖЕСТВЕННАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ 360.5 KB
  Линейная модель множественной регрессии выглядит следующим образом: Y = β0 β1x1 β2x2 βkxk ε где Y зависимая переменная результативный признак; x1xk независимые или объясняющие переменные; 0 1 k коэффициенты регрессии;  ошибка регрессии. Общая последовательность построения множественной линейной регрессионной модели следующая: Оценка параметров уравнения; Оценка качества регрессии; Проверка на мультиколлинеарность ее исключение; Проверка на гетероскедастичность коррекция на...
42154. ОПРЕДЕЛЕНИЕ ГОРИЗОНТАЛЬНОЙ СОСТАВЛЯЮЩЕЙ МАГНИТНОГО ПОЛЯ ЗЕМЛИ С ПОМОЩЬЮ ТАНГЕНС – ГАЛЬВАНОМЕТРА 102.5 KB
  Цель работы определение одного из элементов земного магнетизма горизонтальной составляющей Н0 магнитного поля Земли с помощью тангенс гальванометра. В точках Земли лежащих на магнитных полюсах напряженность магнитного поля Земли имеет вертикальное направление. В любой другой точке Земли напряженность ее магнитного поля можно разложить на вертикальную и горизонтальную составляющие: Существование магнитного поля в любой точке Земли можно установить с помощью магнитометра или магнитной стрелки.
42155. СНЯТИЕ ПЕТЛИ ГИСТЕРЕЗИСА И КРИВОЙ НАМАГНИЧИВАНИЯ ФЕРРОМАГНЕТИКА С ПОМОЩЬЮ ОСЦИЛЛОГРАФА 82 KB
  Величины Н и В можно определить зная величину напряжений вызывающих отклонение электронного луча на одно деление по осям Х и Y при данном усилении: где координаты петли гистерезиса в единицах координатной сетки kx ky коэффициенты пропорциональности определяемые для каждого осциллографа. Величина этой энергии приходящейся на единицу объема образца w определяется в координатах в виде w = BdH и равняется...
42156. ОПРЕДЕЛЕНИЕ ТОЧКИ КЮРИ ФЕРРОМАГНЕТИКА 60.5 KB
  Менделеева обладают железо никель кобальт некоторые редкоземельные металлы а также их сплавы причем эти вещества проявляют ферромагнитные свойства лишь при температурах ниже некоторой определенной для каждого элемента или сплава температуры называемой точкой Кюри. Температура Кюри равна например 7700С для железа 3580С для никеля 11300С для кобальта 160С для гадолиния 1680С для диспрозия. При более высокой температуре и в самой точке Кюри вследствие теплового движения атомов в ферромагнетиках разрушается магнитный порядок и они...
42157. Изучение магнитного поля соленоида (катушки с однонаправленными витками) 90 KB
  Магнитное поле соленоида представляет собой результат сложения полей создаваемых круговыми токами расположенными вплотную и имеющими общую ось. Сечение соленоида схематически показано на рис. Распределение магнитной индукции по длине соленоида вдоль его оси описывается выражением.