- •230105.65 – Программное обеспечение вычислительной техники и автоматизированных систем Методические указания к лабораторному практикуму
- •Содержание
- •Введение
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Задания на лабораторные работы Задание 1
- •Задание 2.
- •Задание 4
- •Примеры выполнения задания Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.
- •Задание 3.
- •Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.
- •1 Построение поля
- •1. 2 Параметры алгоритма
- •1. 3 Выполнение алгоритма шифрования
- •1. 3. 1 Расширение ключа (Key Expansion)
- •1. 3. 2 Шифрование
- •4 Дешифрование
- •Пример выполнения Задания2. .
- •Пример выполнения Задания2
- •Выработка собственных секретных ключей.
- •Дешифровка посланного сообщения.
- •Выработка общего ключа (алгоритм Диффи-Хеллмана).
- •Верификация расшифрованного сообщения.
- •Пример выполнения Задания3.
- •Пример выполнения Задания3. Алгоритм Диффи-Хеллмана
- •Пример выполнения Задания 4. Традиционное шифрование
- •1.1 Цифирь Петра Первого (аналог)
- •1.2 Способ Хилла
- •2.1 Шифрование с помощью пароля
- •2.2 С помощью текста
- •2.3 В качестве пароля псевдослучайная последовательность
- •2.4 Подпись сообщения
- •3 Шифр Вижинера.
- •4 Тарабарская грамота.
- •5 Шифрование с помощью ключа:
- •5.3. Шифрование с помощью псп.
- •5.4 Подпись по алгоритму Эль-Гамаля.
- •6 Метод Хилла
- •7 Цифирь Петра Первого
- •8 Шифрование с помощью ключа.
- •8.4 Ключ – псевдослучайная последовательность
- •8.5 Подпишем полученное сообщение.
- •Литература
- •Приложение
Пример выполнения Задания3. Алгоритм Диффи-Хеллмана
Открытый элемент Р задан в таблице 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы i, вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи-Хэллмана.
Вариант № 15, группа 2091 (№ 1)
Номер в списке группы i = 15
Номер группы k = 1
P = 37
Открытый элемент P = 37. Найти примитивный элемент поля. Секретный ключ каждого участника i = 15, вычислить ключ обмена для участника с номером 35-15 = 20.
GF(37) = <0, 1, 2, 3, …, 35, 36, 37>
Найдем примитивный элемент поля GF(37).
Требуется найти такое число, принадлежащее интервалу [2,37], которое при возведении в 37-ю степень по модулю 37 будет давать в результате единицу. Если же единица будет получена раньше, чем при возведении в 36-ю степень, результаты возведения в степень начнут повторяться, и через выбранный элемент не удастся представить все элементы поля. Исходя из таких соображений, получаем несложный алгоритм нахождения примитивных элементов поля GF(37).
Алгоритм нахождения примитивных элементов поля GF(37).
int _tmain(int argc, _TCHAR* argv[])
{
long int mem, i, j, num, deg, modul, res;
unsigned char mas[38];
deg = 0; modul = 37; mem = 2;
while (mem < 36)
{
num = mem; deg = 0;
while (deg != 36)
{
res = 1; deg = 0;
for (i = 0; i < 36; i++) mas[i] = 0;
do
{
res = res*num; res = res % modul;
deg++; mas[deg] = res;
}
while(res != 1);
num++;
}
std::cout << num-1 << std::endl;
for (i = 0; i < 36; i++)
{
for (j = 0; j < 36; j++)
{
if ((i != j) && (mas[j] == mas[i]))
std::cout << "Wrong" << std::endl;
}
mem = num;
}
}
}
В результате выполнения программы получим следующие значения:
2, 5, 13, 15, 17, 18, 19, 20, 22, 24, 32, 35
Выберем значение α = 2.
Секретный ключ участника А: XA = 15.
Секретный ключ участника B: YB = 35-15 = 20.
Открытый
ключ участника А:
Открытый
ключ участника B:
Обменный
ключ участника А:
Обменный
ключ участника B:
Значения обменного ключа для А и В совпадают.
Обменный ключ: K = 26
Пример выполнения Задания 4. Традиционное шифрование
Вариант № 7, группа 2091 (№ 1)
Номер в списке группы i = 7
Номер группы k = 1
№ |
P |
Открытый текст |
способ |
7 |
43 |
Повадки волчьи, а душа заячья |
Хилла, цифирь Петра 1 |
Задание
Зашифровать поговорку, выбранную из списка в соответствии с номером студента в группе:
С помощью способов, указанных в таблице
С помощью ключа, где в качестве ключа используем
константу c = 3
следующую в списке поговорку, используя алфавит Z33 = (А….Я, е=ё + пробел).
псевдослучайную последовательность, сгенерированную линейным рекуррентным генератором. Зашифровать 7 первых символов, используя алфавит Z32 и равномерный код. ПСП (псевдослучайная последовательность) генерируется матрицей 5*5.
Полученное сообщение подписать, используя алгоритм Эль-Гамаля. В качестве хэш-функции использовать сумму пятиразрядных блоков по модулю 2.
