close

Вход

Забыли?

вход по аккаунту

?

Основная часть (2)

код для вставкиСкачать
Введение
Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом, волновала человеческий ум с давних времен. История криптографии - ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была криптографической системой, так как в древних обществах ею владели только избранные. Священные книги древнего Египта, древней Индии тому примеры. С широким распространением письменности криптография стала формироваться как самостоятельная наука. Первые криптосистемы встречаются уже в начале нашей эры. Так, Цезарь в своей переписке использовал уже более-менее систематический шифр, получивший его имя.
Бурное развитие криптографические системы получили в годы первой и второй мировых войн. Появление вычислительных средств в послевоенные годы ускорило разработку и совершенствование криптографических методов.
Одним из направлений криптографии являются потоковые алгоритмы шифрования. Это направление в последнее время бурно развивается и большинство разработок засекречено. В основном все потоковые шифры основываются на генерировании случайных последовательностей битов. Для этого используются либо сдвиговые регистры, либо различные генераторы: генератор Геффа, генератор "стоп-пошёл", пороговый генератор, самопрореживающие генераторы, суммирующие генераторы. Реализованный в этой курсовой работе, алгоритм RC4 относится к потоковым и использует для генерации случайной последовательности специальный массив.
1 Анализ задания и выбор метода решения
1.1 Анализ задания
Основной целью данной работы является создание программы, реализующей потоковый алгоритм шифрования RC4. В соответствии с заданием исходный текст вводится в отдельное поле. Шифрованный текст также выводится в отдельное поле. Третье поле предназначено для вывода дешифрованного текста, а четвёртое для отображения состояния S блока, используемого при шифровании. Предусмотрено сохранение данных из полей шифрованного, дешифрованного текста и S блока, а также загрузка данных в поля исходного, шифрованного текста и S блока. В режиме обучение предлагается зашифровать текст по ключу, вводимому пользователем. Для облегчения этой работы программа проверяет правильность действий на каждом этапе и доделывает их сама, если правильно проделано определённое число шагов. На случай возникновения вопросов в программе предусмотрена небольшая помощь с описанием алгоритма.
1.2 Выбор метода решения и его реализация
Для реализации поставленной задачи программу целесообразно писать в среде программирования C++Builder 6.0x, так как в ней удобней создавать приложения под Windows. Исходный код программы можно посмотреть в приложении В(текст программы).
Данная программа содержит 5 форм:
1. Главная форма
2. Форма шифрования данных
3. Форма обучения
4. Форма помощи
5. Форма, содержащая информацию о программе.
На главной форме предоставляется возможность выбрать режим работы: шифрование или обучение.
Форма шифрование содержит четыре поля для исходного, шифрованного, дешифрованного текста и для S блока. Шифрованный текст представляется в виде кодов символов. На этой форме существует возможность выбрать режим шифрования:
1) с использование ключа(ключ вводится в отдельном поле);
2) с использование S блока, загруженного из файла или получившегося в результате шифрования предыдущего текста.
Для ускорения работы все пункты меню формы шифрования дублируются дополнительными кнопками.
Форма обучения содержит поля для ввода ключа и исходного текста, а также таблицу кодов символов (кроме служебных). Последовательность действий определена программой. Сначала программа проверяет правильность перевода символов ключа, затем проверяет заполнение массива K. На следующем шаге заполняется S блок и уже потом шифруется исходный текст.
Форму помощи можно вызвать из формы шифрования или из формы обучения. В ней содержаться сведения об алгоритме и о возможностях данной программы.
Форму, с информацией о программе, можно вызвать из формы шифрования. На ней написаны название программы и данные об авторе.
Дополнения по интерфейсу программы можно посмотреть в приложении A (описание программы), а более детально в приложении Б (руководство оператора).
1.3 Описание алгоритма
RC4 - это потоковый шифр с переменным размером ключа, разработанный в 1987 году Роном Ривестом для RSA Data Security. В течение семи лет он находился в частной собственности, и подробное описание алгоритма предоставлялось только после подписания договора о неразглашении, но в сентябре 1994 года кто-то анонимно распространил исходный код алгоритма через Internet. Пользователи Сети, имеющие легальные копии алгоритма RC4, фирмы RSA, подтвердили его достоверность. Алгоритм работает в режиме OFB: поток ключей не зависит от открытого текста. Используется S блок размером 16·16: S0, S1,...,S255. Элементы представляют собой перестановку чисел от 0 до 255, а перестановка является функцией ключа переменной длины.
Сперва, вводится ключ, произвольной длины от 1 до 256 символов. Затем, этим ключом заполняется 256 байтовый массив из элементов K0, K1,..., K255, являющихся кодами символов ключа. При его заполнении ключ повторяется до тех пор, пока весь массив не заполнится ключом.
Второй шаг начальное заполнение S блока числами от 0 до 255 по-порядку.
Следующий шаг - это заполнение S блока с использованием массива K:
for (i=0;i<256;i++)
{
j=(j+S[i]+K[i])%256;
d=S[i];
S[i]=S[j];//переставляем местами элементы блока S
S[j]=d;
}
Теперь можно шифровать текст:
1) Обработка открытого текста идёт по одному байту (символу). Этот байт складывается по модулю 2 со случайным сгенерированным байтом.
2) Для получения случайного байта выполняется следующее:
Используется 2 счётчика i и j, которые вначале равны 0.
i=(i+1)%256;
j=(j+S[i])%256;
d=S[i];
S[i]=S[j];//переставляем местами элементы блока S
S[j]=d;
t=(S[i]+S[j])%256;
G=S[t];//случайный байт
G складывается с байтом открытого текста по модулю 2.
Дешифрование выполняется точно так же, как и шифрование, только сгенерированный байт складывается не с открытым текстом, а с зашифрованным.
Для более наглядного представления алгоритма ниже приведены схемы алгоритмов инициализации и шифрования.
Схема алгоритма инициализации:
Схема алгоритма шифрования:
2 Состав и структура программного модуля
2.1 Состав программного модуля
В данной программе используется 41 функция:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) - главная функция проекта;
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) - функция, которой передаётся управление при вызове главной формы (Form1);
void __fastcall TForm1::Button3Click(TObject *Sender) - функция закрытия главной формы;
void __fastcall TForm1::Button1Click(TObject *Sender) - функция вызова формы обучения (Form2);
void __fastcall TForm1::Button2Click(TObject *Sender) - функция вызова формы шифрования (Form3);
__fastcall TForm2::TForm2(TComponent* Owner): TForm(Owner) - функция, которой передаётся управление при вызове формы обучения;
void __fastcall TForm2::Edit1Change(TObject *Sender) - функция обработки ввода ключа;
void __fastcall TForm2::Button1Click(TObject *Sender) - функция делающая доступным перевод ключа;
void __fastcall TForm2::FormCreate(TObject *Sender) - функция, обработчик создания формы;
void __fastcall TForm2::Button2Click(TObject *Sender) - функция проверки правильности перевода ключа;
void __fastcall TForm2::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect) - функция проверки правильности заполнения массива K ключом;
void Init(int n) - функция, выполняющая n шагов по заполнению S блока;
void __fastcall TForm2::StringGrid3SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect) - функция проверки правильности заполнения S блока;
void __fastcall TForm2::Edit2Change(TObject *Sender) - функция обработки ввода текста для шифрования;
void __fastcall TForm2::Button3Click(TObject *Sender) - функция, позволяющая зашифровать текст;
void __fastcall TForm2::Button4Click(TObject *Sender) - функция проверки правильности зашифрованного текста;
void __fastcall TForm2::BitBtn1Click(TObject *Sender) - функция закрытия формы обучения, выдающая сообщение о прохождении обучения;
void __fastcall TForm2::Button5Click(TObject *Sender) - функция вызова формы помощи(Form4);
void __fastcall TForm2::Button6Click(TObject *Sender) - функция закрытия форсы обучения;
__fastcall TForm3::TForm3(TComponent* Owner): TForm(Owner) - функция, которой передаётся управление при вызове формы шифрования;
void __fastcall TForm3::Button1Click(TObject *Sender) - функция закрытия формы шифрования;
void __fastcall TForm3::Image2Click(TObject *Sender) - функция шифрования исходного текста;
void Init(AnsiString Str1,int *S) - функция, выполняющая инициализацию алгоритма;
void Shifrovanie(int *S,int &rc4i,int &rc4j) - функция шифрования;
void VivodSbloka(int *S,int rc4i,int rc4j) - функция вывода S блока на экран;
void __fastcall TForm3::FormCreate(TObject *Sender) - функция обработчик создания формы;
void __fastcall TForm3::Image1Click(TObject *Sender) - функция дешифрования текста;
void __fastcall TForm3::Edit1Change(TObject *Sender) - функция обработчик ввода ключа;
void DEShifrovanie(int *S,int &rc4i,int &rc4j) - функция дешифрования;
void __fastcall TForm3::N6Click(TObject *Sender) - функция открытия исходного текста;
void __fastcall TForm3::N7Click(TObject *Sender) - функция открытия текста для дешифрования;
void __fastcall TForm3::N8Click(TObject *Sender) - функция сохранения шифрованного текста;
void __fastcall TForm3::N9Click(TObject *Sender) - функция сохранения дешифрованного текста;
void __fastcall TForm3::S2Click(TObject *Sender) - функция сохранения S блока;
void __fastcall TForm3::S1Click(TObject *Sender) - функция загрузки S блока;
void __fastcall TForm3::N4Click(TObject *Sender) - функция вызова формы "О программе";
void __fastcall TForm3::N3Click(TObject *Sender) - функция открытия формы помощи;
__fastcall TForm4::TForm4(TComponent* Owner): TForm(Owner) - функция, которой передаётся управление при вызове фомы помощи;
void __fastcall TForm4::Button1Click(TObject *Sender) - функция закрытия формы помощи;
__fastcall TAboutBox::TAboutBox(TComponent* AOwner)
: TForm(AOwner) - функция, которой передаётся управление при вызове формы "О программе";
void __fastcall TAboutBox::BitBtn1Click(TObject *Sender) - функция закрытия формы "О программе".
2.2 Структура программного модуля
Заключение
В ходе курсовой работы была разработана программа, в которой реализовано следующее:
1) шифрование и дешифрование текстов потоковым алгоритмом шифрования RC4;
2) обучение шифрованию алгоритмом;
3) данная программа работает на платформе WindowsXP;
4) существует защита на некорректный ввод данных;
5) разработан простой и наглядный интерфейс;
6) создана помощь, помогающая работать с программой.
При написании программы использовалась литература, приведённая в приложении Г (библиографический список).
Документ
Категория
Рефераты
Просмотров
29
Размер файла
838 Кб
Теги
часть, основная
1/--страниц
Пожаловаться на содержимое документа