Лабораторная работа № 3. Симметричные алгоритмы шифрования
Задание. Изучить работу симметричного алгоритма шифрования на примере приложения «Шифрование», реализованного в среде Visual Basic 6.0.
Задание 1. В приложении Visual Basic 6.0 создать новый проект и настроить внешний вид приложения «Шифрование».
1. Создать на диске рабочую папку со своим именем, например, D:\Petrov.
Рис.13. Новое приложение Visual Basic
2. Запустить приложение MS Visual Basic 6.0 (группа MS Visual Studio 6.0). Создать новый проект, для чего в стартовом окне New Project выбрать шаблон стандартного модуля Standart.exe и нажать кнопку Открыть. Будет создан новый проект с пустой формой (рис.13). С помощью команды File|Save Project As сохранить содержащуюся в нем форму (файл .frm) под именем Crypt в созданную ранее свою рабочую папку.
3. Выделить форму, щелкнув на ней мышью. В окне свойств Properties – Form1 (рис.13) задать свойства формы: для свойства Caption установить значение Шифрование, для свойства StartupPosition установить значение 2 – CenterScreen. С помощью мыши увеличить размеры формы.
Рис.14. Элементы управления панели ToolBox
4. Вставить в форму элементы управления, щелкая мышью на соответствующих кнопках на панели инструментов ToolBox (рис.14). Перетаскивая и изменяя их размеры с помощью мыши, настроить их внешний вид, как на рис.15. Элементы управления, которые необходимо вставить, перечислены в таблице 1 (порядковые номера элементов помечены также на рис. 15).
5. Настроить свойства вставленных в форму элементов управления, согласно таблице 1. Для этого следует выделить элемент управления, щелкнув на нем мышью, а затем изменить его свойства в окне Properties (отображаются свойства выбранного элемента).
Рис.15. Интерфейс приложения «Шифрование»
Таблица1. Элементы управления приложения «Шифрование»
№ | Тип | Имя (Name) | Названия и значения изменяемых свойств |
1. | Label | Ltext | Caption – Введите строку текста для шифрования |
2. | TextBox | Text | Очистить Text |
3. | Label | LKey | Caption – Введите строку - ключ |
4. | TextBox | Text_key | Очистить Text |
5. | Line | Line1 |
Продолжение таблицы 1
6. | Label | Lencrypt | Caption – Зашифрованный текст |
7. | TextBox | Text_encrypt | Очистить Text, Enadled – False |
8. | Label | Ldecrypt | Caption – Расшифрованный текст |
9. | TextBox | Text_decrypt | Очистить Text, Enadled – False |
10. | CommandButton | CmdClear | Caption – Очистить |
11. | CommandButton | CmdEncr | Caption – Шифровать |
12. | CommandButton | CmdDecr | Caption – Расшифровать |
13. | CommandButton | CmdExit | Caption – Выход |
6. Сохранить проект (файл .vbp) в своей рабочей папке под именем Project_Crypt.
Задание 2. Разработать программный код, представляющий собой набор процедур обработки событий, возникающих при работе с приложением «Шифрование».
1. Создать процедуру для очистки всех полей ввода (текста, ключа, шифра и расшифрованного текста) приложения. Для этого дважды щелкнуть мышью на кнопке CmdClear «Очистить». В появившемся окне редактора кода возникнет заготовка процедуры реакции на нажатие кнопки «Очистить».
Private Sub CmdClear_Click()
End Sub
Добавить в имеющуюся заготовку строки в соответствии с текстом процедуры.
Private Sub CmdClear_Click()
Text.Text = ""
Text_key.Text = ""
Text_encrypt.Text = ""
Text_decrypt.Text = ""
End Sub
2. Создать процедуру выхода из приложения для кнопки CmdExit «Выход».
Private Sub CmdExit_Click()
End
End Sub
3. Создать процедуру шифрования.
· Для осуществления шифрования необходимо сформировать расширенный алфавит из символов, которые могут встречаться в тексте сообщения и ключа. Пусть это будут латинские и русские буквы, пробел, знаки препинания (кроме двойных кавычек) и цифры. Сформировать из них текстовую строку и записать в качестве значения константы StrCode (символы должны быть записаны на одной строке). Константа StrCode будет использоваться в нескольких процедурах, поэтому ее надо объявить в разделе General (секция общих объявлений).
Рис.16. Переход в раздел General
Для перехода в секцию General необходимо открыть окно программного кода с помощью команды меню View|Code или дважды щелкнуть мышью в области формы, а затем выбрать секцию General в левом выпадающем списке окна программного кода (рис.16)
В секции General объявим и переменную LenCode, которая будет хранить длину алфавита (число символов строки StrCode).
Const StrCode As String = "abcdefghijklmnopqrstuvwx yzабвгд еёжзийклмнопрстуфхцчщшьыъэюя .,: ;'?!()-+=/ \1 234567890"
Dim LenCode As Long
· Создать процедуру, вычисляющую длину используемого алфавита при запуске приложения. Дважды щелкнуть в любом месте формы, свободном от элементов управления. Появится заготовка процедуры реакции на событие «Загрузка формы». Определить ее следующим образом.
Private Sub Form_Load()
LenCode = Len(StrCode)
End Sub
Функция Len вычисляет длину строки.
· Создать процедуру для кнопки CmdEncr «Шифровать». Процедура производит посимвольное прочтение строк исходного текста и ключа; вычисляет коды, соответствующие положению прочитанных символов в алфавите; вычисляет код для шифра с помощью операции сложения по модулю; ищет символ алфавита, соответствующий коду шифра и добавляет его в конец формируемой строки зашифрованного текста.
Private Sub CmdEncr_Click()