Реализация алгоритма книжного шифра
Контрольная работа - Компьютеры, программирование
Другие контрольные работы по предмету Компьютеры, программирование
сплатформенными и бесплатными.
3.1.3 Консольная реализация
В консольной реализации программы (файл bookc.exe) реализованы функции шифрования. Данные для обработки программа получает из командной строки. Консольная версия предназначена для использования в различных скриптах.
3.2 Описание алгоритма программы
Главной программной составляющей, которые используются в данной работе, является функция шифрования: Process(char* crypt_file,char* encrypt_file,char mode_value,char* key_value), где:* crypt_file - имя зашифрованного файла.* encrypt_file - имя расшифрованного (исходного) файла.mode_value - символ режим (с - для шифрования)* key_value - Строка содержащая в себе ключ.
Рассмотрим подробнее работу функции:
В зависимости от режима mode выбирается шифровать или расшифровывать файл. Если mode==с тогда файл шифруется, иначе файл будет расшифрован. Далее после определения режима, функция считывает блок из файла размеров 512 байт. Такой размер был выбран не случайно, т.к. большинство оборудования работает с блоками такого размера. Следовательно это увеличивает скорость обработки файла.
Функция шифрования выглядит следующим образом:
writebuffer[i]=(ti+t)5, где:
writebuffer - это выходная строка размером 512 байт.- текущая позиция в строке,- символ из исходной строки,- текущий символ ключа.
Результат взят по модулю, чтобы значение входило в диапазон значений char.
При расшифровке используется обратная + операция -.
Результирующая строка writebuffer записывается в файл.
4. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ
Данный программный продукт может использоваться для создания зашифрованных файлов, которые можно безопасно хранить, и передавать по небезопасным каналам информационных сетей типа Интернет.
На диске хранятся все файлы, которые связанны с реализацией программы на языке программирования C++, а также компилятор gcc, среда разработки Dev-Cpp, набор библиотек GTK+ и текст пояснительной записки. Который был создан в текстовом редакторе Word, прочитав который можно получить необходимые сведения для работы с программой.
Созданные файлы отвечают всем особенностям и задачам языка ANSI C++, например, фаил с расширением .exe соответствует самой программе, запустив который, мы можем работать с самой программой; фаил с расширением .cpp отвечает за текст программы (просмотреть его можно только тогда, когда у вас на компьютере установлена та версия С++, на которой была создана программа); также существуют файлы с расширениями h, o, rc, glade.
5. ИНСТРУКЦИЯ СИСТЕМНОГО ПРОГРАММИСТА
криптографический шифрование информация программа
В файле crypt.h реализован интерфейс класса шифрования.
Класс для шифровки, расшифровки данных
Поля класа:- для хранения ключа шифрования- имя кодированного файлаимя расшифрованного файладля установки режима (с - кодировать)
Методы классаустановить имена файловустановить имя шифрованного файлаустановить имя нормального файлаузнать имя шифрованного файлаузнать имя нормального файлаустановить ключузнать ключустановить режим (с - кодировать)узнать режим (с - кодировать)обработать файлы (в зависимости от режима)
Конструкторы()(string cryptfilename, string encryptfilename,char ec) (string cryptfilename, string encryptfilename,char ec, char *nkey)
все неустановленные памаметры конструктор устанавливает в NULL
ВЫВОДЫ
В результате выполнения поставленной задачи была создана программа, выполняющая шифрование файлов методом книжного шифра. Также была изучена вся необходимая литература по этой теме. Также были закреплены знания, полученные на лекциях и лабораторных занятиях по программированию.
ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Керниган Б., Ритчи Д. Язык программирования Си: Москва: Финансы и статистика, 1992г. - 272 с.
. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++: Харьков: Издательство Фолио, 2002г. - 500 с.
. П.Дж. Дейтел, Х.М. Дейтел Как программировать на С++: Перевод с англ.- В.Г. Кузьменко, Издательство ЗАО Бином, Москва 2003 г. - 1150 с.
. Бугров Я.С., Никольский С.М. Элементы линейной алгебры и аналитической геометрии: Москва: Наука, 1984г. - 190 с.
. Прата С. Язык программирования C: Санкт-Петербург: ДиаСофтЮП, 1999г. - 880 с.
. Рябушко А.П., Бархатов В.В. Сборник индивидуальных заданий по высшей математике: Минск, 1989 г. - 270 с.
Приложение
Текст программы
#include "crypt.h"
#include
#include namespace std;::crypt(){="";="";="";='c';
}::crypt(string cryptfilename, string encryptfilename,char ec){=cryptfilename;=encryptfilename;="";=ec;
}::crypt(string cryptfilename, string encryptfilename,char ec,char *nkey){=cryptfilename;=encryptfilename;=ec;=nkey;
}crypt::SetFilesName(string cryptfilename, string encryptfilename){=cryptfilename;=encryptfilename;
}crypt::SetCryptFileName(string cryptfilename){=cryptfilename;
}crypt::SetEncryptFileName(string encryptfilename){>encfilename=encryptfilename;
}crypt::GetCryptFileName(){cfilename;
}crypt::GetEncryptFileName(){encfilename;
}crypt::SetKey(char *nkey){=nkey;
}crypt::GetKey(){out(key);out;
}crypt::SetMode(char ec){=ec;
}crypt::GetMode(char &res){=this->mode;
}crypt::Process(){t,ti,k,i,bc;* cryptfile;* encryptfile;=strlen(key);readbuffer[512];writebuffer[512];(mode=='c'){=fopen(cfilename.c_str(),"wb");=fopen(encfilename.c_str(),"rb");(!feof(encryptfile)){=fread((char*)&readbuffer, 1, 512, encryptfile);(i=0;i0)=key[i%k];=key[i];[i]=(ti+t)5;
}((char*)&writebuffer, bc, 1, cryptfile);
}(encryptfile);(cryptfile);
}{=fopen(cfilename.c_str(),"rb");=fopen(encfilename.c_str(),"wb");(!feof(cryptfile)){=fread((char*)&readbuffer, 1, 512, cryptfile);(i=0;i0)=key[i%k];=key[i];[i]=(ti-t)5;
}((char*)&writebuffer, bc, 1, encryptfile);
}(encryptfile);(cryptfile);
}
}