Помощь в написании студенческих работ
Антистрессовый сервис

Разработка прикладной программы для криптографической обработки данных шифром Цезаря (язык программирования C++)

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

В те времена было лишь три основных способа защиты информации. Один из них предполагал защиту ее чисто физическими методами: охрана документа — носителя информации — физическими лицами, передача его специальным курьером и т. д. Второй способ получил название «стеганография» (латино-греческое сочетание слов, означающих в совокупности «тайнопись). Его принцы был в скрытии самого факта наличия… Читать ещё >

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

МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ТВЕРСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра ИНФОРМАЦИОННЫЕ СИСТЕМЫ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту (работе)

На тему Разработка прикладной программы для криптографической обработки данных шифром Цезаря (язык программирования C++)

Специальность 80 801 «Прикладная информатика в экономике»

Автор курсового проекта (работы) Кулевая Е.М.

Руководитель проекта (работы) Алексеев В.В.

Тверь 2014 г.

Введение

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

В те времена было лишь три основных способа защиты информации. Один из них предполагал защиту ее чисто физическими методами: охрана документа — носителя информации — физическими лицами, передача его специальным курьером и т. д. Второй способ получил название «стеганография» (латино-греческое сочетание слов, означающих в совокупности «тайнопись). Его принцы был в скрытии самого факта наличия информации. В этом случае использовались так называемые симпатические чернила. При соответствующем «проявлении» бумаги, текст становится видимым. Один из примеров сокрытия информации приведен в письменах древнегреческого историка Геродота. На голове раба, которая брилась наголо, записывалось нужная информация, и когда волосы его становились достаточно длинными, раба отправляли к получателю, который заново брил его голову и читал полученное сообщение. И ещё один способ защиты информации заключался в переделывании смыслового текста в некий набор хаотических знаков (или букв алфавита). Адресат этого сообщения имел возможность преобразовать его в то же самое смысловое сообщение, если обладал ключом к его построению. Этот способ охраны информации назывался криптографическим.

Криптография — слово греческое и в переводе означает «тайнопись. По утверждению многих специалистов, криптография по возрасту — современник египетских пирамид. В документах древних стран — Индии, Египта, Месопотамии — есть сведения о системах и способах составления шифрованных писем. Более подробные и достоверные сведения о шифрах относятся к Древней Греции. Главное понятие криптографии — шифр (от арабского «цифра»; арабы первыми стали заменять буквы на цифры с целью защиты исходного текста). Тайный элемент шифра, недоступный посторонним, называется ключом шифра. Как правило, в древние времена использовались так называемые шифры замены и шифры перестановки. Историческим примером шифра замены является шифр Цезаря (1 век до н.э.), описанный Римским историком Светонием. Гай Юлий Цезарь пользовался в своей переписке шифр собственного изобретения. Применительно к современному русскому языку он состоял в следующем. Переписывался алфавит: А, Б, В, Г, Д, Е, …,; затем под ним переписывался такой же алфавит, но со смещением на 3 буквы влево.

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

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

В рамках данного курсового проекта поставлена задача написать программу, которая позволяет зашифровывать и расшифровывать с помощью шифра Цезаря сообщение, написанное на русском языке. Этот шифр реализует следующее преобразование текста: каждая буква исходного текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу. Для решения задачи использован язык программирования C++.

1. Аналитическая часть

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

Современная информационная безопасность поддерживает три базовых принципа, которые должны быть обеспечены:

§ Целостность данных — способность системы противостоять попыткам умышленного, либо непредумышленного искажения или разрушения информации.

§ Конфиденциальность — свойство информации, предопределяющее доступ к информации лицам, у которых нет на это разрешения.

§ Доступность — информация доступна лицам, которым она разрешена, 24 часа в сутки, 7 дней в неделю.

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

Под угрозой понимается мера возможности возникновения такого явления или события, следствием которого могут быть нежелательные воздействия на информацию, как например:

§ Нарушение (или опасность нарушения физической целостности).

§ Несанкционированная модификация информации (или угроза такой модификации).

§ Несанкционированное получение информации (или угроза такого получения).

§ Несанкционированное размножение информации (или угроза такого размножения).

Современные угрозы можно разделить на три класса:

§ Физические угрозы.

§ Аппаратные угрозы.

§ Программные угрозы.

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

Основной схемой классификации всех криптоалгоритмов является следующая:

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

§ Криптография с ключом. Алгоритм воздействия на передаваемые данные известен всем сторонним лицам, но он зависит от некоторого параметра — «ключа», которым обладает только отправитель и получатель.

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

§ Асимметричные криптоалгоритмы. Алгоритм таков, что для зашифровки сообщения используется один («открытый») ключ, известный всем желающим, а для расшифровки — другой («закрытый»), существующий только у получателя.

В зависимости от характера воздействия, производимых над данными, алгоритмы подразделяются на:

§ Перестановочные. Блоки информации (байты, биты, более крупные единицы) не изменяются сами по себе, но изменяется их порядок следования, что делает информацию недоступной стороннему наблюдателю.

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

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

Уменьшение объёма закодированного файла возможно только при наличии встроенного алгоритма архивации в криптосистеме и при условии сжимаемости информации (так, например, архивы, музыкальные файлы формата МР3, видеоизображения формата JPEG сжиматься более чем на 2−4% не будут).

В зависимости от размера блока информации криптоалгоритмы делятся на:

§ Потоковые шифры. Единицей кодирования является один бит. Результат кодирования не зависит от прошедшего ранее входного потока. Схема применяется в системах передачи потоков информации, то есть в тех случаях, когда передача информации начинается и заканчивается в произвольные моменты времени и может случайно прерываться. Наиболее распространёнными представителями поточных шифров является скремблеры.

§ Блочные шифры. Единицей кодирования является блок из нескольких байтов (в настоящее время 4−32). результат кодирования зависит от всех исходных байтов эого блока. Схема применяется при пакетной передаче информации и кодирования файлов.

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

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

Многие качественные криптографические алгоритмы доступны широко в интернете. К широко известным симметричным алгоритмам относятся DES и IDEA, наверное, самым лучшим асимметричным алгоритмом является RSA.

1.2 История развития криптографии Имеются свидетельства, что криптография как техника защиты текста возникла вместе с письменностью, и способы тайного письма были известны уже древним цивилизациям Индии, Египта и Месопотамии. В древнеиндийских текстах среди 64-х искусств названы способы изменения текста, некоторые из них можно отнести к криптографическим. Автор таблички с рецептом для изготовления глазури для гончарных изделий из Месопотамии использовал редкие обозначения, пропускал буквы, а имена заменял на цифры, чтобы скрыть написанное. В дальнейшем встречаются различные упоминания об использовании криптографии, большая часть относится к использованию в военном деле.

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

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

История криптографии насчитывает около 4 тысяч лет. В качестве основного критерия периодизации криптографии, возможно, использовать технологические характеристики используемых методов шифрования.

Первый период (приблизительно с 3-го тысячелетия до н. э.) характеризуется господством моноалфавитных шифров (основной принцип — замена алфавита исходного текста другим алфавитом через замену букв другими буквами или символами).

Второй период (хронологические рамки — с IX века на Ближнем Востоке и с XV века в Европе — до начала XX века) ознаменовался введением в обиход полиалфавитных шифров.

Третий период (с начала и до середины XX века) характеризуется внедрением электромеханических устройств в работу шифровальщиков. При этом продолжалось использование полиалфавитных шифров.

Четвертый период (с середины до 70-х годов XX века), период перехода к математической криптографии. Появляются строгие математические определения количества информации, передачи данных, энтропии, функций шифрования. До 1975 года криптография оставалась «классической», или же, более корректно, криптографией с секретным ключом.

Современный период развития криптографии (с конца 1970;х годов по настоящее время) отличается зарождением и развитием нового направления — криптография с открытым ключом. Её появление знаменуется не только новыми техническими возможностями, но и сравнительно широким распространением криптографии для использования частными лицами (в предыдущие эпохи использование криптографии было исключительной прерогативой государства). Правовое регулирование использования криптографии частными лицами в разных странах сильно различается — от разрешения до полного запрета.

Современная криптография образует отдельное научное направление на стыке математики и информатики — работы в этой области публикуются в научных журналах, организуются регулярные конференции. Практическое применение криптографии стало неотъемлемой частью жизни современного общества — её используют в таких отраслях как электронная коммерция, электронный документооборот (включая цифровые подписи), телекоммуникации и других.

Также развиваются принципиально новые направления. На стыке квантовой физики и математики развиваются квантовые вычисления и квантовая криптография. Хотя квантовые компьютеры лишь дело будущего, уже сейчас предложены алгоритмы для взлома существующих «надёжных» систем. С другой стороны, используя квантовые эффекты, возможно построить и принципиально новые способы надёжной передачи информации. Активные исследования в этой области идут с конца 1980;х годов.

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

1.3 Обзор современных криптографических алгоритмов

1. Алгоритм DES:

DES — название Федерального Стандарта Обработки информации, который описывает алгоритм шифрования данных (Data Encryption Algorithm DEA). В терминах ANSI DEA определен как стандарт X9.32.DEA — развитие алгоритма Lucifer, который был разработан в начале 1970;х годов компанией IBM; на заключительных стадиях разработки активное участие принимало NSA и NBS. С момента опубликования DEA (более известный как DES), широко изучался и известен как один из лучших симметричных алгоритмов.

Схема алгоритма, где:

Text исходный текст (блок 64 бита)

Crypt зашифрованный блок

Key 64-х разрядный ключ числа разрядность на данной ветке алгоритма

P, Pk перестановки

S подстановка 6 бит -> 4 бита

L (i) сдвиг (i — номер итерации)

xor сложение по модулю 2

конкатенация битовых строк, причем верхняя — спереди разбиение строки на две, причем первая — наверху ограниченный точками участок повторяется 16 раз.

Перестановки выполняются по обычной формуле

D[i]=S[P[i]]

Где S — исходная строка (массив символов, нумерация с единицы)

D — результат перестановки (массив символов, нумерация с единицы)

P — таблица перестановок (массив индексов в строке S)

S — подстановка 6->4. В соответствие шести битам ставится четыре. Подстановка производится по следующему правилу: пусть исходная битовая строка — /abcdef/, тогда /af/ - номер строки, а /bcde/ - номер столбца. Строка и столбец определяют местонахождение результата в S-таблице. Например, при использовании таблицы S6, число 58 (111 010) переводится в 13 (1101).

Помимо обычного его применения, этот алгоритм можно использовать для создания «односторонних» функций. Для этого ключ и исходный текст меняются местами: в формуле Crypt=DES (Text, Key) исходный текст может быть несекретным и фиксированным. А Crypt рассматривается как функция ключа — Key.

DEA оперирует блоками 64-битного размера и использует 56-битный ключ (8 четных битов полного 64-битного ключа не используются). DEA — симметричная криптосистема, определенная как 16-раундовый шифр Фейстеля была первоначально предназначена для аппаратной реализации. Когда DEA используется для передачи информации, то чтобы зашифровать и расшифровать сообщение или чтобы создать и проверить код подлинности сообщения (MAC) отправитель и получатель должны знать секретный ключ. DEA может также использоваться одним пользователем, например, для шифрования файлов на жестком диске. В многопользовательской среде организовать защищенное распределение ключа сложно; идеальное решение этой проблемы предлагает криптография общего ключа.

2. Алгоритм RSA:

RSA — криптографическая система открытого ключа, обеспечивающая такие механизмы защиты как шифрование и цифровая подпись (аутентификация — установление подлинности). Криптосистема RSA разработана в 1977 году и названа в честь ее разработчиков Ronald Rivest, Adi Shamir и Leonard Adleman.

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

Алгоритм RSA состоит из следующих пунктов:

1. Выбрать два достаточно больших простых числа p и q

2. Вычислить n = p * q

3. Вычислить m = (p — 1) * (q — 1)

4. Выбрать число d взаимно простое с m

5. Выбрать число e так, чтобы e * d = 1 (mod m)

Числа e и d являются ключами RSA. Шифруемые данные необходимо разбить на блоки — числа от 0 до n — 1. Шифрование и дешифровка данных производятся следующим образом:

· Шифрование: b = ae (mod n)

· Дешифровка: a = bd (mod n)

Следует также отметить, что ключи e и d равноправны, т. е. сообщение можно шифровать как ключом e, так и ключом d, при этом расшифровка должна быть произведена с помощью другого ключа.

Алгоритм RSA намного медленнее чем DES и другие алгоритмы блокового шифрования. Программная реализация DES работает быстрее по крайней мере в 100 раз и от 1,000 до 10,000 — в аппаратной реализации (в зависимости от конкретного устройства). Благодаря ведущимся разработкам, работа алгоритма RSA, вероятно, ускорится, но аналогично ускорится и работа алгоритмов блокового шифрования.

3. Алгоритм ГОСТ 28 147–89:

Этот алгоритм шифрования является симметричным, т. е. ключ зашифровки совпадает с ключом расшифровки. Длина ключа 256 бит, что обеспечивает очень большую криптостойкость алгоритма. Ключом в данном алгоритме служит массив из восьми 32-битных чисел. Ключ можно представить как таблицу в которой 8 строк и 32 столбца. Такая конфигурация ключа необходима для работы алгоритма.

Алгоритм как бы состоит из трех уровней. Основной шаг криптопреобразования — самый нижний уровень, на его основе строятся все более высокие части алгоритма. Отталкиваясь от основных шагов строятся базовые циклы: цикл зашифрования, цикл расшифрования и цикл выработки имитовставки. На самой верхней ступени стоят собственно реальные алгоритмы или циклы (на самом деле стандарт ГОСТ 28 147–89 содержит не один, а несколько алгоритмов шифрования), которые строятся на основе базовых циклов.

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

На входе основного шага определяется 64-битный блок данных N = (N1, N2), где N1 — младшая 32-битовая часть, а N2 — старшая 32-битовая часть. Обе части рассматриваются как отдельные 32-битовые числа. На вход основного шага также поступает один из восьми элементов ключа. 32-битовый элемент ключа обозначается за X. Далее производятся следующие действия:

1. S = N1 + X (mod 232).

2. Число S разбивается на 8 частей: S0, S1,S2,S3, S4, S5,S6,S7 по 4 бита каждая, где S0 — младшая, а S7 — старшая части числа S.

3. Для всех i от 0 до 7: Si = T (i, Si), где T (a, b) означает ячейку таблицы замен с номером строки a и номером столбца b (счет с нуля).

4. Новое число S, полученное на предыдущем шаге циклически сдвигается в сторону старших разрядов на 11 бит.

5. S = S xor N2, где xor — операция исключающего или.

6. N2 = N1.

7. N1 = S.

Как результат основного шага криптопреобразования возвращается блок данных N = (N1, N2), где N2 равно исходному N1, а N1 — результат преобразований основного шага.

Базовые циклы ГОСТ 28 147–89 строятся из основных шагов криптопреобразования путем многократного их повторения с различными элементами ключа. Блок данных, с которым работает базовый цикл, поступает на его вход один раз в начале работы, а результатом базового цикла является преобразованный блок данных. Как и в основном шаге 64-битный блок данных обозначают через N = (N1, N2), а элементы ключа через X с индексом, означающим номер элемента в ключевом массиве. Берут блок данных N и вызывают последовательно процедуру основного шага.

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

ГОСТ 28 147–89 определяет три основных режима шифрования: простая замена, гаммирование и гаммирование с обратной связью и один дополнительный режим выработки имитовставки. Данные обрабатываются блоками по 64 бита, на которые разбивается массив, последний блок может быть неполным. В двух последних режимах имеется возможность обрабатывать неполный блок данных, в первом длина данных должна быть кратна 64-м битам.

1.4 Анализ криптографического алгоритма «шифр Цезаря»

В I в до н. э. Гай Юлий Цезарь во время войны с галлами, переписываясь со своими друзьями в Риме, заменял в сообщении первую букву латинского алфавита (А) на четвертую (D), вторую (В) — на пятую (Е), наконец, последнюю — на третью (Рис.1).

Сообщение об одержанной им победе выглядело так: YHQL YLGL YLFL «Veni, vidi, vici» — «Пришел, увидел, победил» (лат.).

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется буквой находящейся на некоторое постоянное число позиций левее или правее него в алфавите. Например, в шифре со сдвигом 3, А была бы заменена на Г, Б станет Д, и так далее.

Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами. Древнеримский историк Светоний не приводит фактов дешифрования переписки Цезаря. Сам Цезарь всю жизнь ис пользовал один и тот же ключ (сдвиг — 3). Этим шифром он пользовался, в частности, для обмена посланиями с Цицероном.

Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и все еще имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет практически никакого применения на практике.

Рис. 1

В 19-ом столетии, личная секция рекламных объявлений в газетах иногда использовалась, чтобы обмениваться сообщениями, зашифрованными с использованием простых шифров. Кан (1967) описывает случаи когда любители участвовали в секретных коммуникациях, зашифрованных с использованием шифра Цезаря в «Таймс». Даже позднее, в 1915, шифр Цезаря находил применение: российская армия использовала это как замену для более сложных шифров, которые оказались слишком сложными для войск; у немецких и австрийских криптоаналитиков были лишь небольшие трудности в расшифровке этих сообщений.

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

Ключевые слова, короче чем сообщение (например, «Complete Victory», используемое Конфедерацией во время гражданской войны в США), вводят циклический образец, который мог бы быть обнаружен с помощью улучшенной версии частотного анализа.

В апреле 2006, беглый босс Мафии Бернардо Провенцано был пойман в Сицилии частично из-за криптоанализа его сообщений, написанных с использованием вариации шифра Цезаря. Шифр Провенцано использовал числа, так, чтобы «A» была написана как «4», «B» как «5», и так далее.

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

Например, если внутреннее колесо повернуть так, чтобы символу A внешнего диска соответствовал символ D внутреннего диска, то мы получим шифр со сдвигом 3 влево.

Рис. 2

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

Разрабатываемая прикладная программа должна решать следующие задачи:

§ Шифрование введенного пользователем сообщения.

§ Дешифрование введенного пользователем сообщения.

Целевой аудиторией для данной программы могут быть школьники, студенты СУЗов и ВУЗов для обучения основам шифрования, а именно шифрованию и дешифрованию данных с помощью шифра Цезаря. А так же программу могут использовать преподаватели для проверки заданий по шифрованию и дешифрованию текстов шифром Цезаря и все желающие пользователи для своего досуга.

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

Прикладная программа использует следующий алгоритм действий:

1. Ввод цифры 1 и 2 для выбора режима работы программы (1 — шифрование, 2 — дешифрование).

2. Если выбран режим шифрования, то пользователь вводит сообщение, которое нужно зашифровать. После окончания ввода и нажатия клавиши enter, на экран выводится зашифрованное сообщение. Для выхода из программы — нажать enter.

3. Если выбран режим дешифрования, то пользователь вводит сообщение, которое нужно дешифровать и нажимает клавишу enter. Ниже на экран выводится дешифрованное сообщение. Для выхода из программы — нажать enter.

2. Проектная часть

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

где — символ открытого текста, — символ шифрованного текста, — мощность алфавита, а — ключ.

С применением этих двух математических формул, осуществляется шифрование и дешифрование символов русского алфавита в прикладной программе.

Блок-схема общего алгоритма работы прикладной программы представлена ниже. (Рис.3)

Рис.3

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

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

Информационные модели делятся на описательные и формальные.

Описательные информационные модели — это модели, созданные на естественном языке (т.е. на любом языке общения между людьми: английском, русском, китайском, мальтийском и т. п.) в устной или письменной форме.

Формальные информационные модели — это модели, созданные на формальном языке (т.е. научном, профессиональном или специализированном). Примеры формальных моделей: все виды формул, таблицы, графы, карты, схемы и т. д.

Хроматические (информационные) модели — это модели, созданные на естественном языке семантики цветовых концептов и их онтологических предикатов (т.е. на языке смыслов и значений цветовых канонов, репрезентативно воспроизводившихся в мировой культуре). Примеры хроматических моделей: «атомарная» модель интеллекта (АМИ), межконфессиональная имманентность религий (МИР), модель аксиолого-социальной семантики (МАСС) и др., созданные на базе теории и методологии хроматизма.

Типы информации, содержащейся в модели:

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

Данные:

§ статические характеристики объектов — информация о заводе-изготовителе, дате изготовления и так далее;

§ динамическая информация — данные мониторинга, изменяющиеся в режиме реального времени;

§ ретроспективные данные — история функционирования объекта, отчеты о событиях: проведенных осмотрах, регламентных работах и так далее;

§ плановые данные, например, план будущих осмотров и работ.

Графическая информация:

§ фотографии;

§ сферические панорамы;

§ трехмерные модели объектов;

§ электронные карты.

Документы:

§ технологические схемы;

§ проектные и конструкторские чертежи;

§ ведомости и спецификации;

§ календарные планы-графики работ;

§ финансовые отчеты;

§ другие типы документов.

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

Основные функции информационных моделей:

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

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

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

§ Визуализация данных.

2.3. Программное обеспечение.

Переменные, используемые при разработке прикладной программы для шифрования и дешифрования сообщений с помощью шифра Цезаря (Таблица 1. Переменные в прикладной программе):

Таблица 1. Переменные в прикладной программе

Переменная

Тип переменой

Назначение переменной

buffalpha

char

Используемый алфавит (русские строчные буквы).

i

int

Счетчик цикла для определения длины введенного сообщения.

j

int

Символ шифруемого или дешифруемого текста.

l

int

Счетчик для определения длины алфавита (по кругу).

k

int

Ключ для шифрования и дешифрования сообщения (всегда равен 3 для шифра Цезаря).

x

int

Запоминается значение шифруемой буквы.

y

int

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

rr

int

Режим работы программы (1 или 2).

buff

char

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

Входные данные: ввод осуществляется пользователем по средством клавиатуры. Вводятся только цифры (1 или 2) и строчные буквы русского алфавита. Все введенные данные отображаются на мониторе.

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

Для работы программы необходим компьютер с установленной операционной системой Windows 2000 или выше, и устройства ввода-вывода: монитор, клавиатура и мышь. Требования к компьютеру минимальные, необходимые для работы установленной операционной системы.

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

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

Заключение

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

Также были получены навыки составления алгоритма для поставленной задачи и воплощения этого алгоритма в текст программы, написанной на языке C++ в среде Microsoft Visual Studio 2010. А также была разработана прикладная программа, которая успешно решает поставленную задачу, то есть осуществляющая работу в двух режимах, что позволяет выполнять шифрование и дешифрование сообщений «методом Цезаря».

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

алгоритм шифр цезарь схема

Библиографический список

1. Жельников В. Кpиптогpафия от папиpуса до компьютеpа. — М.: 1996.

2. Павловская Е. А. Программирование на языке высокого уровня — Минск: Питер, 2005. — 460с.

3. Партыка Т. Л., Попов И. И. Информационная безопасность. Москва ИНФРА-М 2002 г., 243с.

4. Страуструп Б. Язык программирования С++. / Б.Страуструп. — Киев: ДиаСофт, 1993. — 540c.

5. Ященко В. В.

Введение

в криптографию. СПб.: Питер, 2001.

Приложение Алгоритм работы программы

1.Запустить программу двойным нажатием на .exe-файл.

2. Ввести цифру 1 или 2 в зависимости от нужного режима работы программы (1 — шифрование, 2 — дешифрование).

3. После выбора режима ввести сообщение, которое нужно шифровать или дешифровать.

4. После нажатия клавиши enter, что означает конец ввода сообщения, ниже отображается зашифрованное или дешифрованное сообщение (в зависимости от режима работы программы).

5. Нажатием клавиши enter после появления зашифрованного или дешифрованного сообщения происходит выход из программы.

Основные оконные формы прикладной программы Рис.4

Рис.5

Рис.6

Рис.7

Рис.8

Листинг прикладной программы «шифр Цезаря» на языке программирования C++:

#include «stdafx.h»

#include «iostream»

#include «stdio.h»

#include «string.h»

#include «conio.h»

#include «windows.h»

using namespace std;

char buffalpha[34]="абвгдеёжзийклмнопрстуфхцчшщъыьэюя" ;

int main ()

{

SetConsoleCP (1251); SetConsoleOutputCP (1251);

int i, x, y, rr, k=3;

char buff[100]="" ;

puts («Выберите действие: n»);

puts («1.Шифрованиеn»);

puts («2.Дешифрованиеn»);

scanf_s («%i» ,&rr);

if (rr==1)

{

cout<<" Введете сообщение для шифрования:" <

cin>>buff;

for (int i=0;i

{

for (int l=0;l

if (buff[i]==buffalpha[l]) x=l;

int j;

j=(x+k)%(strlen (buffalpha));

buff[i]=buffalpha[j];

}

cout<<" Зашифрованное сообщение: n" <

cout<

}

else

{

cout<<" Введите сообщение для дешифрования:" <

cin>>buff;

cout<<" Дешифрованное собщение: «<

for (i=0;i

{

for (int l=0;l

if (buff[i]==buffalpha[l]) y=l;

int j;

j=((y+(strlen (buffalpha))-(k%(strlen (buffalpha)))))%(strlen (buffalpha)) ;

buff[i] = buffalpha[j];

}

cout<

}

_getch ();

}

.ur

Показать весь текст
Заполнить форму текущей работой