Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE \* MERGEFORMAT - 43 -
МИНОБРНАУКИ РОССИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ТВЕРСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра (предметная комиссия) ИНФОРМАЦИОННЫЕ СИСТЕМЫ
СОГЛАСОВАНО УТВЕРЖДАЮ
Гл. специалист предприятия, Заведующий кафедрой ИС
для которого выполнен
реальный проект (работа)
подпись, инициалы, фамилия подпись, инициалы, фамилия
“ “ 201__ г. “ “ 201__г.
На тему Разработка прикладной программы для криптографической обработки данных шифром Цезаря (язык программирования C++).
Автор курсового проекта (работы) Кулевая Е.М.
подпись, инициалы, фамилия
Обозначение курсового проекта (работы) КП 2068280-080801-25-2014 группа ПИ 12-08
Специальность 080801 «Прикладная информатика в экономике»
номер, наименование
Руководитель проекта (работы) Алексеев В.В.
подпись, дата, инициалы, фамилия
Проект (работа) защищен(а) _____________________ оценка____________________________
дата
Консультанты по разделам:
Аналитическая часть
краткое наименование раздела подпись, дата, инициалы, фамилия
Проектная часть
краткое наименование раздела подпись, дата, инициалы, фамилия
Нормоконтролер ___________________________________
подпись, дата, инициалы, фамилия
Тверь 2014
город год защиты
Тверской государственный технический университет
Кафедра Информационные системы
УТВЕРЖДАЮ
Заведующий кафедрой ИС
(подпись)
" " 201_ г.
на выполнение курсового проекта (работы)
Студенту
1. Тема проекта (работы):
(утверждена приказом по ВУЗу от № _______ ).
2. Срок сдачи студентом законченного проекта (работы)
3. Исходные данные к проекту (работе)
4. Содержание расчётно-пояснительной записки курсового проекта (работы):
а) Аналитическая часть
б) Проектная часть
5. Перечень графического (иллюстративного) материала:
6. Консультанты по проекту (работе) с указанием относящихся к ним разделов проекта
7. Дата выдачи задания
Руководитель
подпись
Задание принял к исполнению “ ” 201__ г.
(подпись студента)
Содержание
Содержание……………………………………………………………………..4
Введение………………………………………………………………………6
1. Аналитическая часть……………………………………………………….10
1.1. Понятие информационной безопасности………………………………10
1.2. История развития криптографии………………………………………..15
1.3. Обзор современных криптографических алгоритмов…………………18
1.4. Анализ криптографического алгоритма «шифр Цезаря»……………...25
1.5. Постановка задачи……………………………………………………….29
2. Проектная часть……………………………………………………………32
2.1. Математическое обеспечение…………………………………………...32
2.2. Информационное обеспечение………………………………………….34
2.3. Программное обеспечение………………………………………………37
Заключение……………………………………………………………………40
Библиографический список………………………………………………….42
Приложение…………………………………………………………………...44
Введение
Сейчас, во время всемирного распространения и развития информационных технологий, большая значимость отводится проблеме информированной безопасности, обеспечению защиты конфиденциальной информации от ознакомления с ней конкурирующих групп или посторонних лиц. О важности сохранения информации в тайне знали уже в древние времена, когда с появлением письменности появилась и опасность ознакомления ней нежелательных лиц.
В те времена было лишь три основных способа защиты информации. Один из них предполагал защиту ее чисто физическими методами: охрана документа - носителя информации - физическими лицами, передача его специальным курьером и т.д. Второй способ получил название "стеганография" (латино-греческое сочетание слов, означающих в совокупности "тайнопись). Его принцы был в скрытии самого факта наличия информации. В этом случае использовались так называемые симпатические чернила. При соответствующем "проявлении" бумаги, текст становится видимым. Один из примеров сокрытия информации приведен в письменах древнегреческого историка Геродота. На голове раба, которая брилась наголо, записывалось нужная информация, и когда волосы его становились достаточно длинными, раба отправляли к получателю, который заново брил его голову и читал полученное сообщение. И ещё один способ защиты информации заключался в переделывании смыслового текста в некий набор хаотических знаков (или букв алфавита). Адресат этого сообщения имел возможность преобразовать его в то же самое смысловое сообщение, если обладал ключом к его построению. Этот способ охраны информации назывался криптографическим.
Криптография - слово греческое и в переводе означает "тайнопись. По утверждению многих специалистов, криптография по возрасту - современник египетских пирамид. В документах древних стран - Индии, Египта, Месопотамии - есть сведения о системах и способах составления шифрованных писем. Более подробные и достоверные сведения о шифрах относятся к Древней Греции. Главное понятие криптографии - шифр (от арабского "цифра"; арабы первыми стали заменять буквы на цифры с целью защиты исходного текста). Тайный элемент шифра, недоступный посторонним, называется ключом шифра. Как правило, в древние времена использовались так называемые шифры замены и шифры перестановки. Историческим примером шифра замены является шифр Цезаря (1 век до н.э.), описанный Римским историком Светонием. Гай Юлий Цезарь пользовался в своей переписке шифр собственного изобретения. Применительно к современному русскому языку он состоял в следующем. Переписывался алфавит: А, Б, В, Г, Д, Е, ...,; затем под ним переписывался такой же алфавит, но со смещением на 3 буквы влево.
Таким образом, можно утверждать, что основы криптологии были заложены давно в древности и, естественно, после многолетнего существования нашли широчайшее применение в современной жизни.
Актуальность данного курсового проекта заключается в том, что и в настоящее время шифр Цезаря широко применяется на практике, для обучения основам криптографии и получения навыков шифрования и дешифрования небольших текстов. Для военных и государственных нужд данный шифр не применяется, из-за низкой криптографической стойкости.
В рамках данного курсового проекта поставлена задача написать программу, которая позволяет зашифровывать и расшифровывать с помощью шифра Цезаря сообщение, написанное на русском языке. Этот шифр реализует следующее преобразование текста: каждая буква исходного текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу. Для решения задачи использован язык программирования C++.
1. Аналитическая часть
1.1. Понятие информационной безопасности.
Современное развитие мировой экономики характеризуется все большей зависимостью рынка от значительного объема информационных потоков. Не смотря на все возрастающие усилия по защите информации, она все более уязвима. Поэтому актуальность информационной безопасности усиливается. Информационная безопасность является наиболее важной в государственном управлении и вооруженных силах.
Современная информационная безопасность поддерживает три базовых принципа, которые должны быть обеспечены:
Под информационной безопасностью понимается состояние защищенности национальных интересов страны (жизненно важных интересов личности, общества и государства) в информационной сфере от внутренних и внешних угроз.
Под угрозой понимается мера возможности возникновения такого явления или события, следствием которого могут быть нежелательные воздействия на информацию, как например:
Современные угрозы можно разделить на три класса:
Информационной системой называется комплекс, включающий вычислительное и коммуникационное оборудование, программное обеспечение, лингвистические средства и информационные ресурсы, а также системный персонал и обеспечивающий поддержку динамической информационной модели некоторой части реального мира для удовлетворения информационных потребностей пользователей.
Основной схемой классификации всех криптоалгоритмов является следующая:
В зависимости от характера воздействия, производимых над данными, алгоритмы подразделяются на:
Любые криптографические преобразования не увеличивают обьём информации, а лишь изменяют ее представление. Поэтому, если программа шифрования значительно увеличивает обьём выходного файла, то в ее основе лежит не оптимальный, а возможно и вообще некорректный криптоалгоритм.
Уменьшение объёма закодированного файла возможно только при наличии встроенного алгоритма архивации в криптосистеме и при условии сжимаемости информации (так, например, архивы, музыкальные файлы формата МР3, видеоизображения формата JPEG сжиматься более чем на 2-4% не будут).
В зависимости от размера блока информации криптоалгоритмы делятся на:
Современные алгоритмы шифровки/дешифровки достаточно сложны и их невозможно проводить вручную. Настоящие криптографические алгоритмы разработаны для использования компьютерами или специальными аппаратными устройствами. В большинстве приложений криптография производится программным обеспечением и имеется множество доступных криптографических пакетов.
Симметричные алгоритмы работают быстрее, чем асимметричные. На практике оба типа алгоритмов часто используются вместе: алгоритм с открытым ключом используется для того, чтобы передать случайным образом сгенерированный секретный ключ, который затем используется для дешифровки сообщения.
Многие качественные криптографические алгоритмы доступны широко в интернете. К широко известным симметричным алгоритмам относятся 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 (111010) переводится в 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 состоит из следующих пунктов:
Числа e и d являются ключами RSA. Шифруемые данные необходимо разбить на блоки - числа от 0 до n - 1. Шифрование и дешифровка данных производятся следующим образом:
Следует также отметить, что ключи e и d равноправны, т.е. сообщение можно шифровать как ключом e, так и ключом d, при этом расшифровка должна быть произведена с помощью другого ключа.
Алгоритм RSA намного медленнее чем DES и другие алгоритмы блокового шифрования. Программная реализация DES работает быстрее по крайней мере в 100 раз и от 1,000 до 10,000 в аппаратной реализации (в зависимости от конкретного устройства). Благодаря ведущимся разработкам, работа алгоритма RSA, вероятно, ускорится, но аналогично ускорится и работа алгоритмов блокового шифрования.
3. Алгоритм ГОСТ 28147-89:
Этот алгоритм шифрования является симметричным, т.е. ключ зашифровки совпадает с ключом расшифровки. Длина ключа 256 бит, что обеспечивает очень большую криптостойкость алгоритма. Ключом в данном алгоритме служит массив из восьми 32-битных чисел. Ключ можно представить как таблицу в которой 8 строк и 32 столбца. Такая конфигурация ключа необходима для работы алгоритма.
Алгоритм как бы состоит из трех уровней. Основной шаг криптопреобразования - самый нижний уровень, на его основе строятся все более высокие части алгоритма. Отталкиваясь от основных шагов строятся базовые циклы: цикл зашифрования, цикл расшифрования и цикл выработки имитовставки. На самой верхней ступени стоят собственно реальные алгоритмы или циклы (на самом деле стандарт ГОСТ 28147-89 содержит не один, а несколько алгоритмов шифрования), которые строятся на основе базовых циклов.
Данные, с которыми работает алгоритм представляются как 32-битовые беззнаковые числа. Перед тем, как предоставить алгоритму данные, их необходимо преобразовать в 32-битные числа. Здесь может возникнуть проблема с тем, что данных не хватит, чтобы заполнить последнее 32-битное число и последний блок данных будет неполным, но эта проблема легко решается с помощью гаммирования. Имитовставка - контрольная сумма, которая прилагается к массиву данных и призвана подтвердить подлинность данных. Злоумышленник, не зная пароля не сможет получить правильную имитовставку, а получатель, зная верный пароль и получив при расшифровке имитовставки неверный результат сразу обнаружит подмену данных.
На входе основного шага определяется 64-битный блок данных N = (N1, N2), где N1 - младшая 32-битовая часть, а N2 - старшая 32-битовая часть. Обе части рассматриваются как отдельные 32-битовые числа. На вход основного шага также поступает один из восьми элементов ключа. 32-битовый элемент ключа обозначается за X. Далее производятся следующие действия:
Как результат основного шага криптопреобразования возвращается блок данных N = (N1, N2), где N2 равно исходному N1, а N1 - результат преобразований основного шага.
Базовые циклы ГОСТ 28147-89 строятся из основных шагов криптопреобразования путем многократного их повторения с различными элементами ключа. Блок данных, с которым работает базовый цикл, поступает на его вход один раз в начале работы, а результатом базового цикла является преобразованный блок данных. Как и в основном шаге 64-битный блок данных обозначают через N = (N1, N2), а элементы ключа через X с индексом, означающим номер элемента в ключевом массиве. Берут блок данных N и вызывают последовательно процедуру основного шага.
Циклы зашифрования и расшифрования взаимообратны и взаимозаменяемы. Если блок данных был зашифрован с помощью одного цикла, то расшифрован он может быть с помощью другого, но стандарт определяет циклы и их использование четко, т.е. цикл зашифрования не может быть использован для расшифровки и наоборот.
ГОСТ 28147-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) для выбора режима работы (шифрование или дешифрование сообщения). Выходной информацией являются только строчные буквы русского.
Прикладная программа использует следующий алгоритм действий:
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с.
4. Страуструп Б. Язык программирования С++. / Б.Страуструп. - Киев: ДиаСофт, 1993. 540c.
5. Ященко В.В. Введение в криптографию. СПб.: Питер, 2001.
6. http://www.maksakov-sa.ru
7. http://ru.wikipedia.org
Приложение
Алгоритм работы программы:
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<<"Введете сообщение для шифрования:"<<endl;
cin>>buff;
for(int i=0;i<strlen(buff);i++)
{
for (int l=0;l<strlen(buffalpha);l++)
if (buff[i]==buffalpha[l]) x=l;
int j;
j=(x+k)%(strlen(buffalpha));
buff[i]=buffalpha[j];
}
cout<<"Зашифрованное сообщение:\n"<<endl;
cout<<buff<<endl;system("break");
}
else
{
cout<<"Введите сообщение для дешифрования:"<<endl;
cin>>buff;
cout<<"Дешифрованное собщение: "<<endl;
for(i=0;i<strlen(buff);i++)
{
for (int l=0;l<strlen(buffalpha);l++)
if (buff[i]==buffalpha[l]) y=l;
int j;
j=((y+(strlen(buffalpha))-(k%(strlen(buffalpha)))))%(strlen(buffalpha)) ;
buff[i] = buffalpha[j];
}
cout<<buff<<endl;system("break");
}
_getch();
}