- •Министерство образования и науки
- •Кафедра асоиу
- •Курсовая работа
- •Введение
- •Постановка задачи
- •Основные характеристики программы:
- •Теоритическая часть
- •Текст программы
- •Руководство программиста
- •Тестирование программы шифрования
- •Тестирование программы дешифрования
- •Результат шифрования и дешифрования
- •Заключение
Санкт-Петербургский
государственный электротехнический
университет
“ЛЭТИ”
СПЕЦИАЛЬНОСТЬ
Компьютерная
безопасность
ДИСЦИПЛИНА
Программирование
НА ТЕМУ:
«Разработка
программы шифрования
и дешифрования
методом XOR»
Выполнил
студент _I_
курса, группы 1363
Груздев
Александр Владиславович
Принял Мальцев
Юрий Константинович
«__» декабря
2011 г.
_________________
2011
2011Министерство образования и науки
Кафедра асоиу
Курсовая работа
Содержание
-
Введение…………………………………………………….……….....3
-
Постановка задачи…………………………………………………......4
-
Теоретическая часть……………………………………………....…5-6
-
Код программы………………………………………………..……..7-9
-
Руководство программиста…………………………………....…......10
-
Тестирование программы шифрования……………………...…..11-15
-
Тестирование программы дешифрования…………………….....16-20
-
Результат тестирования программ шифрования и дешифрования..21-22
9.Листинг программы…………………………………………………….38-45
Приложение 1…………………………………………………………….15
Приложение 2…………………………………………………………….25
Введение
Цель работы: закрепление знаний и умений программирования на языке С++ при создании реально действующей программы шифрования текста и дешифровки зашифрованного текста.
Требования к программам шифрования и дешифрования: Программы шифрования и дешифрования должны быть единой программной единицей, разработанной на языке С++; эти программы должны использовать один и тот же ключ для шифрования и дешифрования текста. Схема работы программы приведена на рис.1.
Рис.1 Схема работы программ.
Постановка задачи
Разработать программу на языке C++ для шифрования и дешифрования данных.
Основные характеристики программы:
-
Программа должна шифровать данные, полученные из файла с помощью ключа, введённого с клавиатуры, и выводить полученный результат в отдельный файл, созданный в процессе выполнения программы.
-
Программа должна дешифровать данные, полученные из зашифрованного файла, с помощью ключа, введённого с клавиатуры, и выводить полученный результат в отдельный файл, созданный в процессе выполнения программы.
-
Данные в файле, полученном в пункте 2, не должны отличаться от исходных данных в файле из пункта 1.
Теоритическая часть
Файл – именованная совокупность данных, представляющая собой последовательность элементов данных одного типа, причем кол-во элементов данных, практически, не ограничено.
Массив – один из структурированных типов данных. Характеризуется тем, что все его элементы имеют один и тот же тип. При определении массива следует указать его имя и количество элементов. В некоторых случаях допустимо описание без указания количества элементов. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером.
Указатель – это переменная, содержащая адрес другой переменой. Значениями указателей служат адреса участков памяти, выделенных для объектов конкретных типов. Именно поэтому в определении и описании указателя всегда присутствует обозначение соответствующего ему типа. Эта информация позволяет в последующем с помощью указателя получить доступ ко всему сохраняемому объекту в целом.
Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы. Для работы с динамической памятью используют указатели. С их помощью осуществляется доступ к участкам динамической памяти, которые называются динамическими переменными.
Файловый поток – особая переменная, значением которой является файл.
Поток – понятие обозначающее на языке С++ внутренний (логический) файл. Это последовательность байтов передаваемых в процессе ввода,вывода и не зависящая от конкретного устройства с которым производится обмен информации. Для поддержки потоков в С++ используется библиотека содержащая иерархию классов, построенную на основе класса ios.
Локальные переменные – которые используются внутри данной функции. Память для них выделяется в стеке, поэтому после окончания работы функции они удаляются из памяти. Нельзя возвращать указатель на локальную переменную, т. к. память, выделенная такой переменной, будет освобождаться.
Шифрование — способ преобразования открытой информации в закрытую и обратно. Применяется для хранения важной информации в ненадёжных источниках или передачи её по незащищённым каналам связи.