Автор работы: Пользователь скрыл имя, 09 Апреля 2013 в 09:51, курсовая работа
В курсовой работе требуется разработать программу шифрования и дешифрования методом одноразовых блокнотов. К программе предъявляются следующие требования:
- входными данными является произвольный текст или файл;
- возможность шифрования/дешифрования текста или файла;
- возможность генерации случайного текста или файла.
Введение 4
1. Разработка алгоритма работы программы 5
2. Кодирование программы 7
3. Проверка и отладка программы 9
4. Оценка результатов работы программы 12
Заключение 13
Список литературы 14
Приложение А 15
Приложение Б 16
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО
«МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ
(национальный
Кафедра ВТ
«Утверждаю»
Преподаватель Телешевский В.В.
_______ «____»________2012г.
КУРСОВАЯ РАБОТА
по теме: программа
шифрования текста/файла методом
одноразовых блокнотов
по дисциплине: методы и средства защиты компьютерной информации
Студент гр. ВВМ 4-57 ______Загоруйко С.Н.
«______»_____________2012 г.
Байконур 2012
г.
Содержание
Введение 4
1. Разработка алгоритма работы программы 5
2. Кодирование программы 7
3. Проверка и отладка программы 9
4. Оценка результатов работы программы 12
Заключение 13
Список литературы 14
Приложение А 15
Приложение Б 16
Введение
В курсовой работе требуется разработать программу шифрования и дешифрования методом одноразовых блокнотов. К программе предъявляются следующие требования:
- входными данными является произвольный текст или файл;
- возможность шифрования/дешифрования текста или файла;
- возможность генерации случайного текста или файла.
В ходе выполнения курсовой работы разрабатывается
алгоритм работы программы. Затем программа
реализуется в среде программирования
Microsoft Visual Studio 2008.
1 Разработка алгоритма работы программы
Программа должна выполнять шифрование текста, содержащего видимые символы ASCII, и дешифрование зашифрованного текста. В качестве ключа здесь выступает «блокнот» - текстовая последовательность случайных символов. Размер блокнота не может быть меньше размера шифруемого текста.
Так же программа должна выполнять шифрование файлов. Для этого требуется специальный файл «блокнот». Размер «блокнота» не может быть меньше размера файла.
Так же программа должна иметь возможность генерирования файлов «блокнотов» и «блокнотов» текстовых строк.
Программу можно разделить на три части: генерация «блокнотов», шифрование/дешифрование файлов, шифрование/дешифрование текстовых строк.
Алгоритм шифрования файлов очень прост и заключается в сложении двух соответствующих байтов файла и «блокнота». Результирующее значение помещается на место исходного байта файла. Для дешифровки файла, требуется произвести разность двух соответствующих байтов файла и «блокнота».
Алгоритм шифрования текста отличается наличием алфавита. В алфавите ищутся позиции, на которых стоят символы исходной строки и «блокнота». После чего эти значения складываются. В случае если получившееся число будет больше длины алфавита, то из этого числа вычитается длина алфавита. В результате получается число определяющее позицию символа в алфавите. Из алфавита выбирается символ, стоящий на данной позиции.
Для дешифрования текста используется алгоритм, приведенный выше, только производиться вычитание. И в случае если результирующее число получается меньше нуля, к нему прибавляется длина алфавита.
В данной программе используется следующий
алфавит: «
Для генерации чисел используется
системная функция
Алгоритм работы программы представлен
в приложении А.
2 Кодирование программы
Для реализации программы создаются
две формы. На первой форме происходит
процесс шифрования/
Рисунок 2.1 – Форма 1
Рисунок 2.2 – Форма 2
Файл, в котором производиться описания работы «Формы 2» называется «Form2.h».
При нажатии на верхний «RadioButton» вызывается обработчик «radioButton1_Click» в котором, отключаются все нижние компоненты, и включаются верхние. При нажатии на нижний «RadioButton» вызывается обработчик «radioButton2_Click» в котором, отключаются все верхние компоненты, и включаются нижние.
При нажатии на верхнюю кнопку «Создать» вызывается обработчик «button1_Click». В нем производиться создание файла, и побайтная запись случайных чисел. После чего файл закрывается. В функции генерации случайных чисел «rand» передается количество чисел в одном байте.
При нажатии на нижнюю кнопку «Генерировать и сохранить в буфере обмена» вызывается обработчик «button2_Click» в котором, определяется алфавит, и на его основе в цикле производиться заполнение строки «Генерируемая строка» случайными символами из алфавита. В функции генерации случайных чисел «rand» передается размер алфавита.
Файл, в котором производиться описания работы «Формы 1» называется «Form1.h».
При нажатии на верхний «RadioButton» вызывается обработчик «radioButton1_Click» в котором, отключаются все нижние компоненты, и включаются верхние. При нажатии на нижний «RadioButton» вызывается обработчик «radioButton2_Click» в котором, отключаются все верхние компоненты, и включаются нижние.
При нажатии кнопки «Генерации блокнота» вызывается обработчик «button1_Click» в котором, открывается «Форма 2».
При нажатии кнопки «Зашифровать файл» вызывается обработчик «button2_Click» в котором, проверяется наличие файла и «блокнота». В случае если какой либо файл отсутствует, будет выведен MessageBox в котором будет отображено какого файла не существует. После чего оба файла открываются в режиме чтения.В переменные fSize1 и fSize2 заносятся размеры обоих файлов. В случае если размер файла окажется больше размера «блокнота» то на экран выведиться MessageBox в котором будет написанно о данной ошибке. Далее в массив байтов buff и buff2 записывается содержимое файла и «блокнота». Далее оба файла закрываются а в цикле производиться поочередное сложение байтов файла и «блокнота». После чего файл открывается в режиме создания, и в него записывается содержимое buff. После этого файл закрывается и на экран выводиться собщение об удачном шифровании.
При нажатии кнопки «Расшифровать файл» вызывается обработчик «button3_Click» в котором, выполняются те же действия что и в «button3_Click», но вместо суммы производиться разность.
При нажатии кнопки «Зашифровать строку» вызывается обработчик «button4_Click» в котором, проверяется длина шифруемой строки и «блокнота», в случае если длина «блокнота» меньше выдается сообщение об ошибке. Далее, инициализируются переменная целого типа data в которой, будет храниться текущий символ, и строка result в которой будет храниться результирующая строка.В цикле производиться сложение позиций двух символов. Если результирующее число больше длины алфавита, то из него вычитается alphavit->Length. После чего получившийся символ дописывается в строку result. Для поиска позиции символа в алфавите используется функция InPos. В качестве параметра передается символ, а возвращаемым параметром является его позиция. После того как цикл завершит работу. Содержимое строки result копируется в textBox3.
При нажатии кнопки «Расшифровать строку» вызывается обработчик «button5_Click» в котором, выполняются все те же действия что и в обработчике «button4_Click», но вместо суммы производиться разность.
Метод InPos используется для того что бы отыскать позицию искомого символа в алфавите. В качестве входной переменной используется переменная целого типа data. Функция возвращает значение целого типа. Внутри функции объявляется еще одна переменая целого типа count, в которой будет храниться позиция текущего символа. В цике производиться перебор символов алфавита, и поочередное сравнение их с data. В случае совпадения, цикл прерывается а в качестве возвращаемого значения ипользуется count.
Листинг программы представлен в приложении
Б.
3 Проверка и отладка программы
Для проверки работоспособности программы использовалась следующая методика:
В результате проведенных проверок подтвердилась работоспособность программы и возможность дешифровать зашифрованные данные.
На рисунке 3.1 представлен исходный файл (слева) и зашифрованный (справа).
Рисунок 3.1 – Исходный и зашифрованный файлы
На рисунке 3.2 представлено содержимое файла «1.snb».
Рисунок 3.2 – содержимое файла «1.snb»
На рисунке 3.3 представлено изображение программы до дешифровки строки (слева) и после (справа).
Рисунок 3.3 – Шифрование строки до и после.
4 Оценка результатов работы программы
Результатом данной курсовой работы стала программа способная производить шифрование и дешифрование методом одноразовых блокнотов. Шифровать можно как файлы, так и текст. Недостатком данного метода шифрования является «блокнот», который должен быть соизмерим с шифруемыми данными. В случае шифрования больших данных потребуется генерация больших «блокнотов». В виду того что одним «блокнотом» необходимо пользоваться один раз, был создан так же генератор блокнотов. Вопрос безопасной передачи блокнота ложиться на пользователя. С помощью данной программы целесообразно шифровать небольшие по объему сообщения, требующие высокой защиты для передачи зашифрованных данных. В качестве таких данных могут выступать пароли, какая либо личная информация, а так же небольшие файлы содержащие набор паролей и другой важной информации.
В ходе выполнения курсовой работы в среде Visual Studio 2008 создано приложение выполняющее генерацию «блокнотов», а так же шифрование и дешифрование используя их.
Разработка приложения выполнялось в соответствии с требованиями к приложению и перечнем разрабатываемых вопросов в курсовой работе.
В первом разделе описывался алгоритм работы программы.
Во втором разделе описывался способ реализации заданной программы.
В третьем разделе описывалась методика проверки программы, а так же были приведены результаты ее работы.
В четвертом разделе описывалось возможное назначение программы, ее достоинства и недостатки.
Таким образом, проведено изучение и получение навыков работы по созданию программы шифрования методом одноразовых блокнотов.
Список использованной литературы
Приложение А
(обязательное)
Рисунок А.1 –
Блок схема работы программы
Приложение Б
(обязательное)
Листинг программы
Листинг файла Form1.h
#pragma once
#include "Form2.h"
namespace Kurs {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class Form1 : public System::Windows::Forms::Form {
public:
Form1(void) {
InitializeComponent();
}
protected:
~Form1() {
if (components) {
delete components;
}
}
private: System::Windows::Forms::
private: System::Windows::Forms::
private: System::Windows::Forms::Label^
private: System::Windows::Forms::Label^
private: System::Windows::Forms::
private: System::Windows::Forms::
private: System::Windows::Forms::
private: System::Windows::Forms::
private: System::Windows::Forms::
private: System::Windows::Forms::Label^
private: System::Windows::Forms::
private: System::Windows::Forms::Label^
private: System::Windows::Forms::
private: System::Windows::Forms::
private: System::Windows::Forms::
Информация о работе Программа шифрования текста/файла методом одноразовых блокнотов