Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хранение и защита компьютерной информации. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
мирования более сложного пароля (рис. 6.2), содержащего в том числе и знаки, вводим: =CREATEPASS(10;»True»).
Рис. 6.1. Генерация цифробуквенного пароля
Рис. 6.2. Генерация пароля, содержащего знаки
Отчет по работе
Каждый студент составляет отчет о проделанной работе объ-
емом 4-5 с., который должен содержать следующие материалы.
1. Краткое изложение теории.
51
2. Краткое описание методики проведения лабораторной ра­боты.
3. Исходные данные, расчеты и их результаты.
4. Выводы о проделанной работе.
Контрольные вопросы
1. Каковы требования к выбору и использованию паролей?
2. Каким образом можно определить время перебора всех па­ролей?
3. Каким образом можно определить минимальную длину па­роля?
4. Каким образом можно определить количество символов ал­фавита?
5. Как время перебора всех паролей зависит от количества символов, длины пароля и скорости перебора паролей?
6. Как длина пароля зависит от количества символов, време­ни и скорости перебора?
7. Как количество символов алфавита зависит от длины п
я
, времени и скорости перебора?
л
а
ро-
52
Лабораторная работа 7
МАТЕМАТИЧЕСКИЕ ОСНОВЫ
КРИПТОГРАФИЧЕСКИХ МЕТОДОВ
(часть 1)
Цель работы
Рассмотреть методику выполнения шифрования данных в
Excel. Создать макросы шифрования-дешифрования.
Теоретическая часть
Принцип шифра Виженера – каждая буква в исходном (шиф­руемом) тексте сдвигается по алфавиту на переменное количе­ство символов. Величина сдвига каждой буквы задается ключом (паролем) – секретным словом или фразой, которая применя­ется для шифрования и расшифровки (дешифрования). Напри­мер, зашифруем фразу КЛАД ЗАРЫТ В САДУ. Применим слово ЗИМА в качестве ключа. Запишем это слово подряд несколько раз под исходной фразой (рис. 7.1). Для удобства шифрования применим квадрат Виженера – таблицу, где в каждой строке ал­фавит сдвигается на одну позицию вправо (рис. 7.2).
Рис. 7.1. Исходный текст и ключ
Возьмем строку с первой буквой ключа З и столбец с первой буквой исходного текста К. Их пересечение – буква Т – первая буква зашифрованного сообщения. Аналогично повторим проце­дуру для всех остальных пар букв ключа и исходного сообщения по очереди. Результат – зашифрованный вариант исходной фра­зы (рис. 7.3).
Следует отметить, что одна и та же буква (например, А) в ис­ходном сообщении превратилась в разные буквы на выходе (Н, Й и Б). Это объясняется тем, что при шифровании для них был
53
разный сдвиг. Следовательно, вскрыть шифр Виженера просты­ми способами практически невозможно.
Рис. 7.2. Квадрат Виженера
Рис. 7.3. Исходный текст, ключ, зашифрованный текст
В документах могут использоваться не только буквы рус-
ского языка, но и латиница, цифры, знаки препинания и т.д.
54
Формировать квадрат Виженера с участием всех этих симво­лов – достаточно трудоемкий процесс. Есть более простой спо­соб. Внутри компьютера и ОС каждый символ имеет свой чис­ловой код от 0 до 255 (ASCII-код, American standard code for information interchange). Microsoft Excel включает в свой стан­дартный набор две функции (которые умеют с ними работать): КОДСИМВ (CODE) и СИМВОЛ (CHAR). Первая выдает чис­ловой код символа, указанного в качестве аргумента (например, КОДСИМВ(«Ж») выдаст 198). Вторая – символ соответственно указанному в аргументе коду (СИМВОЛ(198) выдаст букву Ж).
Одним из самых древних и простых в реализации считается шифр Цезаря, который использовал его для тайной переписки. Каждая буква исходного шифруемого сообщения сдвигается в алфавите на заданное количество символов. Так, например, если сдвиг равен 3, то буква А превратится в Г, буква Б – в Д и т.д. Символы в конце алфавита (Э, Ю, Я), соответственно, будут пре­вращаться его начало (А, Б, В).
Порядок выполнения работы
1. Реализовать шифрование (ниже приведен пример, вам
необходимо зашифровать свою фразу) формулами по квадрату Виженера с помощью функций ИНДЕКС (INDEX) и ПОИС- КПОЗ (MATCH) – рис. 7.4. Логика формулы:
– первая функция ПОИСКПОЗ (подсвечена зеленым) ищет
первую букву ключа З в зеленом столбце B9:B40 и выдает поряд­ковый номер ячейки (где она ее нашла) – номер строки в квадра­те Виженера, по которому идет шифрование;
– вторая функция ПОИСКПОЗ (подсвечена розовым) ана-
логично ищет первую букву исходного сообщения К в красной строке и выдает порядковый номер столбца;
– функция ИНДЕКС выдает содержимое ячейки из квадрата
C9:AH40 с пересечения строки и столбца с найденными номерами.
2. Реализовать шифрование формулами по кодам символов.
Для этого:
а) для применения шифра Виженера запишем исходный текст и ключ друг под другом. Выведем коды каждой буквы с по­мощью функции КОДСИМВ (рис. 7.5);
55
Рис. 7.4. Шифрование формулами по квадрату Виженера
Рис. 7.5. Шифрование формулами по кодам символов
б) сложим коды символов ключа и исходного текста. Доба-
вим функцию ОСТАТ (MOD) для того, чтобы при превышении максимально допустимого количества символов 256 остаться в пределах 0-255 (рис. 7.6);
в) выведем символы по полученным кодам и сформиру-
ем зашифрованное сообщение. Для этого используем функцию СИМВОЛ (рис. 7.7);
56
Рис. 7.6. Сложение кодов символов ключа и исходного текста
Рис. 7.7. Формирование зашифрованного сообщения
г) объединим все функции в одну формулу для компактно­сти (без лишних строк) – рис. 7.8;
Рис. 7.8. Объединение всех функций в одну формулу
57
д) расшифруем исходные текст, поменяв знак плюс в фор-
муле на минус (рис. 7.9).
Рис. 7.9. Расшифровка
3. Создать макросы для шифрования-дешифрования (шифр
Виженера) для автоматизации действий из пункта 2. Для этого:
а) откроем редактор Visual Basic путем нажатия клавиш
Alt + F11 (или щелкнув по кнопке Visual Basic на вкладке Раз­работчик (Developer)).
б) вставим новый модуль с помощью команды меню Insert
→ Module и скопируем туда текст макросов (приведен ниже).
Первый макрос запрашивает у пользователя ключ и шифрует все ячейки текущего листа. Второй – производит операцию де­шифрования;
‘Шифрование текущего листа Sub Encrypt() Dim Pass$, Key$ Pass = InputBox(«Введите ключ для шифрования:») Key = WorksheetFunction.Rept(Pass, 100)
For Each cell In ActiveSheet.UsedRange Out = “” Txt = cell.Formula For i = 1 To Len(Txt) Out = Out & Chr((Asc(Mid(Txt, i, 1)) + Asc(Mid(Key, i,
1))) Mod 256) Next i cell.Value = Out
58
Next cell End Sub
‘Дешифрация текущего листа Sub Decrypt() Dim Pass$, Key$ Pass = InputBox(«Введите ключ для расшифровки:») Key = WorksheetFunction.Rept(Pass, 100)
For Each cell In ActiveSheet.UsedRange Out = “” Txt = cell.Value For i = 1 To Len(Txt) Out = Out & Chr((Asc(Mid(Txt, i, 1)) - Asc(Mid(Key, i,
1)) + 256) Mod 256) Next i cell.Formula = Out Next cell End Sub
в) запустим получившиеся макросы, нажав Alt + F8 (или
щелкнув по кнопке Макросы (Macros) на вкладке Разработчик (Developer)). При нажатии на кнопку Зашифровать получим следующее (рис. 7.10).
Рис. 7.10. Работа макроса при нажатии на кнопку Зашифровать
При нажатии на кнопку Расшифровать получим следующее
(рис. 7.11).
59
Рис. 7.11. Работа макроса при нажатии на кнопку Расшифровать
4. Реализовать шифрование (ниже приведен пример, вам
необходимо зашифровать свои имя и фамилию) по методу Цеза­ря в Excel. Для этого:
а) на первом листе электронной книги (рис. 7.12) запишем в
столбец А буквы русского алфавита. В столбец В – номера букв. В столбец С – снова буквы (такая запись будет необходима для использования функции ВПР);
60
Рис. 7.12. Алфавит