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); } |
Теперь можно компилировать и запускать. Получили приложение, шифрующее методом моноалфавитной замены.
Сделайте выводы о проделанной работе.