Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по курсовой работе.docx
Скачиваний:
4
Добавлен:
19.12.2018
Размер:
273.99 Кб
Скачать

Министерство образования и науки

Санкт-Петербургский государственный электротехнический университет

“ЛЭТИ”

Кафедра асоиу

СПЕЦИАЛЬНОСТЬ Компьютерная безопасность

ДИСЦИПЛИНА Программирование

Курсовая работа

НА ТЕМУ: «Разработка программы шифрования

и дешифрования методом XOR»

Выполнил студент _I_ курса, группы 1363 Груздев Александр Владиславович

Принял Мальцев Юрий Константинович

«__» декабря 2011 г. _________________

2011

2011

г. Санкт-Петербург

Содержание

  1. Введение…………………………………………………….……….....3

  2. Постановка задачи…………………………………………………......4

  3. Теоретическая часть……………………………………………....…5-6

  4. Код программы………………………………………………..……..7-9

  5. Руководство программиста…………………………………....…......10

  6. Тестирование программы шифрования……………………...…..11-15

  7. Тестирование программы дешифрования…………………….....16-20

  8. Результат тестирования программ шифрования и дешифрования..21-22

9.Листинг программы…………………………………………………….38-45

Приложение 1…………………………………………………………….15

Приложение 2…………………………………………………………….25

Введение

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

Требования к программам шифрования и дешифрования: Программы шифрования и дешифрования должны быть единой программной единицей, разработанной на языке С++; эти программы должны использовать один и тот же ключ для шифрования и дешифрования текста. Схема работы программы приведена на рис.1.

Рис.1 Схема работы программ.

Постановка задачи

Разработать программу на языке C++ для шифрования и дешифрования данных.

Основные характеристики программы:

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

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

  3. Данные в файле, полученном в пункте 2, не должны отличаться от исходных данных в файле из пункта 1.

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

Файл – именованная совокупность данных, представляющая собой последовательность элементов данных одного типа, причем кол-во элементов данных, практически, не ограничено.

Массив – один из структурированных типов данных. Характеризуется тем, что все его элементы имеют один и тот же тип. При определении массива следует указать его имя и количество элементов. В некоторых случаях допустимо описание без указания количества элементов. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером.

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

Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы. Для работы с динамической памятью используют указатели. С их помощью осуществляется доступ к участкам динамической памяти, которые называются динамическими переменными.

Файловый поток – особая переменная, значением которой является файл.

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

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

Шифрование — способ преобразования открытой информации в закрытую и обратно. Применяется для хранения важной информации в ненадёжных источниках или передачи её по незащищённым каналам связи.