83060

Разработка программы для работы с матрицами

Курсовая

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

В данной работе путем одного из самых простых методов шифрования – шифровкой с использованием кодового слова, был зашифрован и ,затем расшифрован произвольный текст. Цель работы: Зашифровать и расшифровать текст с использованием кодового слова.

Русский

2015-03-07

71.47 KB

3 чел.

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

ФГБОУ ВПО «Брянский государственный технический университет»

КАФЕДРА

«Механика и динамика и прочность машин»

Разработка программы для работы с матрицами

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

по информационным технологиям.

Студент гр. 13-ПМ                          Кузора М.С.

Преподаватель:                               Яковлев А.В.

Брянск 2014.

СОДЕРЖАНИЕ:

  1.  Введение……………………………………………………………………………………………………3
  2.  Теоретическая часть……………………………………………………………………………………….4

а).Общие понятия………………………………………………………………………………………….4

б).Виды шифровок…………………………………………………………………………………………5

  1.  Программа…………………………………………………………………………………………….……6
  2.  Результат работы программы………………………………………………………………………….….7
  3.  Заключение…………………………………………………………………………………………………8
  4.  Список литературы………………………………………………………………………………………...9

 

  1.  Введение.

Данная работа предназначена для того, чтобы продемонстрировать возможности шифрования текста методом шифровки с использованием кодового слова. Шифровка производилась при помощи программы Microsoft Visual Studio.

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

Цель работы: Зашифровать и расшифровать текст с использованием кодового слова.

  1.  Теоретическая часть.

Общие понятия.

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

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

С помощью шифрования обеспечиваются три состояния безопасности информации:

Конфиденциальность.

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

Целостность.

Шифрование используется для предотвращения изменения информации при передаче или хранении.

Идентифицируемость.

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

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

 Виды  шифровок.

Самый простой шифр - подстановка. В нем каждая буква меняется на определенный символ, обычно на какую-то иную букву. Подстановка бывает и более сложной: диаграммной, трехграммной, многограммной когда вместо одной буквы используют сочетания из двух, трех и более букв.
Иногда при кодировании сообщение делится на группы букв или других символов определенной, фиксированной, длины. И для каждой такой группы применяется одна и та же перестановка.
Сообщения кодируют и перемешанным алфавитом с последующей многократной подстановкой. Работают и с шифром простой подстановки, но производимой с помощью перемешанного алфавита из 25 букв, записанных в виде квадрата - 5 рядов по 5 букв в каждом.
В матричной системе, которую часто применяют в шифровании, буквы нумеруют от 0 до 25 и рассматривают их как элементы своеобразного алгебраического кольца.
Каждому шифру и коду соответствует особый ключ. Так, в матричной системе ключом является определенная матрица. Для некоторых шифров ключ выбирается случайно и независимо среди чисел 0, 1, …, 25.
Бывают шифры, где ключом служит текст, имеющий смысл. Такой шифр называют шифром «бегущего ключа». Бывают шифры с автоключом, т. е. ключом, заложенным в самом шифре. В общем, сколько шифров, столько и способов дешифровки.
Теория секретных систем детально изучает коды и шифры. С ее помощью измеряют количество секретности и объем ключей. Кроме того, эта теория анализирует сложности шифрования и дешифровки, разрастания числа ошибок в сообщении, если, например, допущена ошибка хотя бы в одной букве, увеличение объема секретной информации при шифровании и многие другие вопросы. Среди них очень серьезный - оценка надежности секретной системы и возможность создания идеальных секретных систем.

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

  1.  ПРОГРАММА.

#include <iostream>

#include <conio.h>

#include <string>

using namespace std;

void main()

{

   string alphabet = "abcdefghijklmnopqrstuvwxyz ";//исходный алфавит.

   string shifrAlphabet="";//алфавит, после подстановки ключевого слова.

   string keyPhrase="";//ключ-слово.

   string text="";//вводимый текст.

   string encoder = "",//зашифрованный текст.

   decoder="";//расшифрованныый текст.

   bool notPovt;//чтобы не было повторений в ключе-слове.

cout<<"input text: ";

getline(cin,text);//вводим текст с пробелами.

   do

   {

       cout<<"input key-phrase: ";//вводим ключ фразу.

       cin>>keyPhrase;

       notPovt = true;//предполагаем, что повторов букв в слове нет.

 for (unsigned int i = 0; i < keyPhrase.length() - 1; i++)

 for (unsigned int j = i + 1; j < keyPhrase.length(); j++)

           if (keyPhrase[i] == keyPhrase[j])//если повторы находим

                   //,то необходимо переввести.

               {

                   notPovt = false;

    i=keyPhrase.length();

                   break;

               }

       if (notPovt == false)

           cout<<"Input without repeat"<<endl;

   }

   while (notPovt == false);//пока не введём без повторов.

   shifrAlphabet = keyPhrase;//начало алфавита - это ключ фраза.

 for (unsigned int i = 0; i < alphabet.length(); i++)

 // потом дописываем в

 // конец нового алфавита

 // все буквы из исходного

 // по порядкую.

 

 // За исключением тех, которые уже у нас есть.

 if (shifrAlphabet.find(alphabet[i]) >alphabet.length())

       shifrAlphabet += alphabet[i];

 //выводим алфавиты

cout<<endl<<"alphabet: "<<alphabet<<endl<<endl;

cout<<"shifrAlphabet: "<<shifrAlphabet<<endl<<endl;

           

 //шифрация.

 for (unsigned int i = 0; i < text.length(); i++)

 //ищем позицию буквы

 //в нормальном алфавите

 //и берём букву из другого алфавита

 // на этой же позиции.

 encoder += shifrAlphabet[alphabet.find(text[i])];

 //дешифрация.

 for (unsigned int i = 0; i < encoder.length(); i++)

 //здесь, как в шифрации ,

 //только позицию ищем в другом алфавите,

 //а букву берём из нормального .

       decoder+=alphabet[shifrAlphabet.find(encoder[i])];

 //выводим то ,что получилось.

   cout<<"encoder text: "<<encoder<<endl<<endl;

   cout<<"decoder text: "<<decoder<<endl<<endl;

   system("pause");

}

  1.  Результат работы программы:

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

Итак, мы ознакомились с методом шифровки с использованием кодового слова.

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

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

  1.  Список литературы:

  1.  Яковлев, А. В. Основы программирования на C++: учебное пособие / А. В. Яковлев, - Брянск: БГТУ, 2013. – 263 с.

  1.  Шевченко, К. В. Основы программирования на C++: лаб. практикум / К. В. Шевченко, А. В. Яковлев, - Брянск: БГТУ, 2011. – 236с.

  1.  Интернет статьи.

 


 

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

38026. Элементарные таблицы 60 KB
  Если значение ноль то рамка не требуется; cellpdding= cellspcing= добавляют свободное пространство между данными ячейки и ее границами и между ячейками таблицы соответственно. th т th контейнер ячейки Заголовок : заголовок столбца или строки. Значения: left заголовок прижать к левому краю ячейки center заголовок расположить по центру ячейки right заголовок прижать к правому краю ячейки; vlign= задает положение данных в ячейке Заголовок по вертикали. Значения: bottom заголовок прижать к нижнему краю ячейки middle заголовок...
38027. Продолжение разговора о ссылках 63.5 KB
  Способ первый с помощью атрибута nme имя закладки тэга : Заголовки стих первый стих второй стих третий в нашем примере мы сделали закладками использовав атрибут тэга nme: Заметьте href= stih3 символ решетки перед именем закладки на которую мы ссылаемся обязателен.
38028. Создание форм 45.5 KB
  Помимо атрибута type большинство элементов управления требуют указания атрибутов nme и vlue для идентификации имени и исходного значения если таковое имеется. Вот пример кода создающего текстовое поле: input type=â€text†nme=â€usernme†vlue=â€â€ Этот код может пригодиться при создании текстового поля для ввода имени пользователя при подключении к Webузлу. Для полноты картины можно дополнить его полем пароля: input type=â€pssword†nme =“userpss†vlue=â€â€ обратите внимание что атрибуту vlue в обоих случаях присвоено...
38029. Создание фреймов 729 KB
  HTML программа имеющая структуру кадров не должна содержать контейнеры body и наоборот. Обычно это файл HTML программы из того же каталога папки что и сам контейнер но может быть и абсолютный адрес файла с любого компьютера. nofrmes т nofrmes контейнер HTML текста для броузеров которые не поддерживают аппарат кадров. Левый фрейм Верхний правый фрейм Нижний правый фрейм Листинг: главный файл html hed title фреймы title hed frmeset cols= 4 frme frmeborder=yes src= left.
38030. Каскадные таблицы стилей 63.5 KB
  Каскадные таблицы стилей Основным понятием CSS является стиль т. CSS действует другим более удобным и экономичным способом. Кроме того CSS позволяет работать со шрифтовым оформлением страниц на гораздо более высоком уровне чем стандартный HTML избегая излишнего утяжеления страниц графикой. Практическое освоение CSS Как вам уже известно информация о стилях может располагаться либо в отдельном файле либо непосредственно в коде Webстранички.
38032. Структура HTML-документа. Создание элементарной WEB-страницы 502 KB
  Для работы с этими текстами был создан специальный протокол HTTP Hyper Text Trnsfer Protocol были обозначены основные элементы языка разметки HTML. Язык HTML развился из стандартного обобщенного языка описания документов SGML и является его производной созданной для разметки текстовых документов. Существуют разные суждения о том считать HTML языком программирования или нет. С точки зрения программистов он имеет достаточно простой синтаксис и довольно легок в изучении но с другой стороны для простого пользователя иногда постижение...
38033. Форматирование текста 44.5 KB
  Форматирование текста Цель работы: используя теги разбивки текста логического и физического форматирования текста создать страницу по данному образцу. Теги разбивки текста h1 т h1 h2 т h2 h3 т h3 h4 т h4 h5 т h5 h6 т h6 заголовки стилей 1 2 3 4 5 6. Атрибут: lign= задает положение текста абзаца на строке. Значения: left выровнять текст по левому краю center выровнять текст по центру right выровнять текст по правому краю.
38034. Работа с цветом фона страницы и цветом шрифта. Задание бегущей строки 159.5 KB
  Работа с цветом фона страницы и цветом шрифта. Контейнер описания шрифта может быть помещен в любой другой контейнер. задает имя шрифта или несколько возможных шрифтов. Броузер берет последующий шрифт если у него нет предыдущего; size= задает размер шрифта.