Реализовать в программе шифрование и дешифрование содержимого файла шифром Виженера с перемешанным один раз алфавитом. Ключ вводится с клавиатуры

16. Реализовать шифрование и дешифрование файла по методу Бофора. Ключ вводится с клавиатуры.

17. Реализовать шифрование и дешифрование файла по методу Виженера с составным ключом. Набор ключей вводится.

Реализовать в программе шифрование и дешифрование содержимого файла по методу Цезаря. Алфавит и сдвиг выбираются пользователем. Провести частотный анализ зашифрованного файла, осуществляя проверку по файлу с набором ключевых слов.

19. Реализовать в программе шифрование и дешифрование содержимого файла по методу Цезаря с ключевым словом. Подвергнуть шифротекст частотному криптоанализу для выявления самых популярных символов.

 

20. Реализовать в программе шифрование и дешифрацию файла с использованием квадратов Кардано размером 4х4 и 5x5.

21. Реализовать в программе шифрование и дешифрацию файла с использованием перестановочного шифра с ключевым словом. Ключевое слово вводится

 


Лабораторная работа № 2

Создание приложения для шифрования информации на базе алгоритма шифра Бофора

Цель работы: создать программу для шифрования информации на базе симметричного алгоритма Бофора.

 

Пусть Шифры Бофора используют фоpмулы:

уi = ki-xi (mod n) и yi = xi-ki (mod n)

где уi - i-й символ aлфавитa; xi – i-й символ открытого текста (номер буквы в алфавите); n – длина используемого алфавита, ki - i-ая буква ключа, в качестве которого используются слово или фраза

Ход работы

Создание проекта

Запускаем среду WS Visual C++.

В меню File выбираем New. В появившемся окне выбираем тип проекта MFC AppWisard (exe) и в соответствующие поля заносим имя и расположение проекта. Нажимаем ОК.

На первом шаге выбираем тип приложения Dialog based.

На втором шаге снимаем «галочки» с About box, 3D controls, ActiveX controls.

На следующих шагах изменений не требуется, поэтому нажимаем Finish.

 

Создание формы

Перед Вами появился редактор форм. С помощью панели Controls создайте нужную форму:

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

 

Напишем код приложения

Объявляем глобальные переменные типа CString в файле MyPrDlg.cpp.

 

#include "MyPr.h" #include "MyPrDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About // Globals CString alfavit1(" -.0123456789_абвгдежзийклмнопрстуфхцчшщьэюяabcdefghijklmnopqrstuvwxyz"); CString alfavit2("()*+,-.0123456789:;<=>?@ABmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧPQRSTU");

 

Добавляем в класс диалогового окна функцию CString CMyPrDlg::chifer(CSrtring). Для этого выбираем Add Member Function

 

и заполняем соответствующие поля.

 

Тело функции:

CString CMyPrDlg::chifer(CSrtring str) { CString result; char symb; int n; // номер буквы в алфавите int len_text = str.GetLength(); for(int i=0;i<len_text;i++) { symb = str[i]; n = alfavit1.Find(symb); if (n==-1) { AfxMessageBox("Шифруемый текст содержит неизвестные символы"); result.Empty(); return result; } result = result + alfavit2[n]; } return result; }

 

Аналогичные действия проделываем и для функции CString CMyPrDlg::dechipher(CString).

 

CString CMyPrDlg::dechipher(CString str) { CString result; char symb; int n; // номер буквы в алфавите int len_text = str.GetLength(); for(int i=0;i<len_text;i++) { symb = str[i]; n = alfavit2.Find(symb); if (n==-1) { AfxMessageBox("Шифруемый текст содержит неизвестные символы"); result.Empty(); return result; } result = result + alfavit1[n]; } return result; }

 

Обработка кнопок

При двойном клике по любому элементу управления Wizard предлагает нам создание функции-обработчика этого элемента.

Тело обработчика:

void CMyPrDlg::OnButton1() { // TODO: Add your control notification handler code here CString str1,str2; GetDlgItemText(IDC_EDIT1,str1); str2 = chifer(str1); SetDlgItemText(IDC_EDIT2,str2); }

 

Выполнив те же действия обработаем вторую кнопку.

void CMyPrDlg::OnButton2() { // TODO: Add your control notification handler code here CString str1,str2; GetDlgItemText(IDC_EDIT1,str1); str2 = dechipher(str1); SetDlgItemText(IDC_EDIT2,str2); }

 

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

Сделайте выводы о проделанной работе.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: