Лаб_11
.docФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М.А. Бонч-Бруевича»
(СПБГУТ)
__________________________________________________________________
Факультет ИКСС
Кафедра ЗСС
Отчет к лабораторной работе № 11 по дисциплине:
«Математические основы защиты информации»
Тема: «Индексы/Диофантовы уравнения»
Выполнил студент Группа ИКБ-14:
Травкина Е. А.
Проверил:
Кушнир Д.В.
г. Санкт-Петербург
2023
Лабораторная/Практика.
Индексы/Диофантовы уравнения
Символ Лежандра.
Алгоритм пошагового вычисления символа Лежандра:
Индексы.
Определение. Пусть числа a и b взаимно просты с n, т. е. НОД(a, n) = 1, НОД(b, n) = 1. Число s называется индексом b по модулю n и основанию a, если as ≡ b mod n.
Понятие индекса представляет собой аналогию понятия логарифма. (В дальнейшем часто будет использоваться понятие дискретный логарифм)
В общем случае определение значения индекса (или определения, что его не существует) является сложной задачей.
Один из способов решения – табличный.
Таблица индексов по модулю 7 для основания 3 (число 3 – первообразный корень).
1) 1, 2, 3, 4, 5, 6; 2) 30, 31, 32, 33, 34, 35.
ind3n
0
1
2
3
4
5
n
1
3
2
6
4
5
n |
1 |
2 |
3 |
4 |
5 |
6 |
ind3n |
0 |
2 |
1 |
4 |
5 |
3 |
31≡3(mod7)
32≡2(mod7)
33≡6(mod7)
34≡4(mod7)
35≡5(mod7)
Диофантовы уравнения первой степени.
Диофантово уравнение с двумя неизвестными имеет вид:
a x + b y = c,
где a, b, c — заданные целые числа, x и y — неизвестные целые числа.
Найти одно из решений диофантова уравнения с двумя неизвестными можно с помощью Расширенного алгоритма Евклида.
Пусть a и b неотрицательны. Расширенный алгоритм Евклида по заданным неотрицательным числам a и b находит их наибольший общий делитель g, а также такие коэффициенты xg и yg, что:
a * xg + b * yg = g.
Если c делится на g = НОД (a,b), то диофантово уравнение a*x + b*y = c имеет решение; в противном случае диофантово уравнение решений не имеет.
одним из решений диофантова уравнения являются числа:
x0 = xg * (c / g) y0 = yg * (c / g).
Пример: имеются монеты достоинством только в 7 и 12 копеек, необходимо уплатить 43 копейки. Как это сделать? Решаем уравнение:
7 x + 12 y = 43
Применяем алгоритм Евклида:
12 = 7· 1 + 5 7 = 5· 1 + 2 5 = 2· 2 + 1 2 = 1· 2
Значит, наибольший общий делитель чисел 7 и 12 равен 1 , а его линейное выражение таково (расширенный алгоритм Евклида): 1 = 5 - 2· 2 = 5 - (7 - 5) · 2 = (12 - 7) - (7 - (12 - 7) · 2) = 12· 3 + 7· (- 5),
т.е. u = - 5, v = 3.
Частное решение: x 0 = uc = (- 5) · 43 = - 215 y 0 = vc = 3 · 43 = 129.
Т.о. необходимо «отобрать» у кассира 215 семикопеечных монет и дать ему 129 двенадцатикопеечных. Процедуру можно упростить, если записать общее решение неоднородного диофантова уравнения:
x = -215 - 12 t y = 129 + 7 t
При значении t = - 18, можно получить частное решение x = 1, y = 3, что более практично...
Задание.
Задание 1.
Определить разрешимо ли квадратичное сравнение x^2=a mod p. (Вычислить, без программирования, символ Лежандра двумя методами из пункта I., сравнить, что получено одинаковое значение).
Вариант 23(3): x^2=5 mod 233
5/233 = 5^((233-1)/2) mod 233 = 5^116 (mod 233) = 232 = -1
a/p = (-1)^(((233-1)/2)((5-1)/2)*(233/5) = (-1)^(116*2)*(233/5) = 233/5
233 = 5*q+r = 5*46 + 3
233/5 = 3/5
3/5= (-1)^(((5-1)/2)((3-1)/2)*(5/3) = (-1)^(2*1)*(5/3) = 5/3
5 = 3*q+r = 3*1 + 2
5/3 = 2/3
2*2/3 = (-1)^((3^2-1)/8)*(2/3) = (-1)^(1)*(2/3) = -2/3
3 = 2*p +r = 2*2 - 1
2/3 = -1/3
-1/3 = (-1)^((p-1)/2) = (-1)^1 = -1
Ответ: символ Лежандра равен -1, следовательно 5 – квадратичный невычет
Задание 2.
Составить таблицу индексов для основания а и модуля p. Отметить случаи (если встретились), когда задача вычисления индекса (дискретного логарифма) неразрешима. Вариант 23(3): а=5, p=21 5^0 = 1 mod 21
5^1 = 5 mod 21
5^2 = 4 mod 21
5^3 = 20 mod 21
5^4 = 16 mod 21
5^5 = 17 mod 21
5^6 = 1 mod 21
5^7 = 5 mod 21
5^8 = 4 mod 21
5^9 = 20 mod 21
5^10 = 16 mod 21
5^11 = 17 mod 21
Таблица индексов
N |
1 |
4 |
5 |
16 |
17 |
20 |
Ind5(n) |
0, 6… |
2,8… |
1,7… |
4,10… |
5,11… |
3,9… |
Задание 3.
Решить (без программирования) диофантово уравнение ax+by=c. Выписать частное и общее решение. Выбрать конкретное решение с «не слишком большими» значениями «x» и «y». Вариант 23(3): а=15, b=8, c=47
15x + 8y = 47
15 = 8*1 + 7 >> 8 = 15 – 7 = 15 – (8-1)
8 = 7*1 + 1 >> 7 = 8 – 1
7 = 7*1
1 = 8 – 7*1 = 8 - (15 - 8) = (-1)*15 + 2*8
u = -1
v = 2
x0 = uc = -1*47 = -47
y0 = vc = 2*47 = 94
x = -47 + 8*t
y= 94 - 15*t
При t = 6, y = 4, x = 1.