Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Хранение и защита компьютерной информации. Лабораторный практикум
.pdf
мирования более сложного пароля (рис. 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. Алфавит
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
