- •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 Подпишем полученное сообщение.
- •Литература
- •Приложение
Пример выполнения Задания2
Алгоритм шифрования RSA. Цифровая подпись
Выработка собственных секретных ключей.
,
,
,
-2 |
-1 |
0 |
1 |
2 |
3 |
- |
- |
0 |
22 |
1 |
6 |
1 |
0 |
1 |
22 |
23 |
160 |
Дешифровка посланного сообщения.
-2 |
-1 |
0 |
1 |
2 |
3 |
4 |
5 |
- |
- |
0 |
24 |
1 |
2 |
2 |
2 |
1 |
0 |
1 |
24 |
25 |
74 |
173 |
420 |
Выработка общего ключа (алгоритм Диффи-Хеллмана).
GF(19)
Верификация расшифрованного сообщения.
Итоговое (расшифрованное, верифицированное) сообщение: (355, 16).
Пример выполнения Задания3.
Алгоритм Диффи-Хеллмана
Открытый элемент Р задан в таблице 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы i, вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи-Хэллмана.
Вариант № 7, группа 2091 (№ 1)
Номер в списке группы i = 7
Номер группы k = 1
P = 43
Открытый элемент P = 43. Найти примитивный элемент поля. Секретный ключ каждого участника i = 7, вычислить ключ обмена для участника с номером 35.
GF(43) = <0, 1, 2, 3, …, 40, 41, 42>
Найдем примитивный элемент поля GF(43).
Требуется найти такое число, принадлежащее интервалу [2,42], которое при возведении в 42-ю степень по модулю 43 будет давать в результате единицу. Если же единица будет получена раньше, чем при возведении в 42-ю степень, результаты возведения в степень начнут повторяться, и через выбранный элемент не удастся представить все элементы поля. Исходя из таких соображений, получаем несложный алгоритм нахождения примитивных элементов поля GF(43).
Алгоритм нахождения примитивных элементов поля GF(43).
int _tmain(int argc, _TCHAR* argv[])
{
long int mem, i, j, num, deg, modul, res;
unsigned char mas[44];
deg = 0; modul = 43; mem = 2;
while (mem < 42)
{
num = mem; deg = 0;
while (deg != 42)
{
res = 1; deg = 0;
for (i = 0; i < 42; 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 < 42; i++)
{
for (j = 0; j < 42; j++)
{
if ((i != j) && (mas[j] == mas[i]))
std::cout << "Wrong" << std::endl;
}
mem = num;
}
}
return 0;
}
В результате выполнения программы получим следующие значения:
3, 5, 12, 18, 19, 20, 26, 28, 29, 30, 33, 34
Выберем значение α = 20. Найдем элементы поля.
α = 20 α2 = 13 α3 = 2 α4 = 40 α5 = 26 α6 = 4 α7 = 37 α8 = 9 α9 = 8 α10 = 31 α11 = 18 |
α12 = 16 α13 = 19 α14 = 36 α15 = 32 α16 = 38 α17 = 29 α18 = 21 α19 = 33 α20 = 15 α21 = 42 α22 = 23 |
α23 = 30 α24 = 41 α25 = 3 α26 = 17 α27 = 39 α28 = 6 α29 = 34 α30 = 35 α31 = 12 α32 = 25 α33 = 27 |
α34 = 24 α35 = 7 α36 = 11 α37 = 5 α38 = 14 α39 = 22 α40 = 10 α41 = 28 α42 = 1 |
Секретный ключ участника А: XA = 7.
Секретный ключ участника B: YB = 35-7 = 28.
Открытый
ключ участника А:
Открытый
ключ участника B:
15
* 208
= 6
Обменный
ключ участника А:
Обменный
ключ участника B:
Значения обменного ключа для А и В совпадают.
Обменный ключ: K = 6
