При заданных неотрицательных целых числах а и b этот алгоритм определяет вектор (u1, u2, u3), такой, что a * u1 + b * u2 = u3 = НОД (a, b).
В процессе вычисления используются вспомогательные векторы (v1, v2, v3), (t1, t2, t3). Действия с векторами производятся таким образом, что в течение всего процесса вычисления выполняются соотношения
Для вычисления обратной величины a-1(mod n) используется частный режим работы расширенного алгоритма Евклида, при котором
b = n, НОД(а,n) = 1, и этот алгоритм определяет вектор (u1, u2, u3), такой, что
Шаги алгоритма:
1. Начальная установка.
Установить (u1,u2,u3):= (0,1, n), (vl, v2, v3):= (1, 0, a).
2. u3 = 1?. Если u3 = 1, то алгоритм заканчивается.
3. Разделить, вычесть.
Установить q:=[u3/v3].
Затем установить
(t1, t2, t3):= (u1,u2,u3) - (v1, v2, v3) * q,
(u1,u2,u3):= (v1, v2, v3),
(v1, v2, v3):= (t1, t2, t3).
Возвратиться к шагу 2.
Пример
Заданы модуль n=23 и число а = 5. Найти обратное число
a-1 (mod 23), т.е. x=5-1(mod23).
Используя расширенный алгоритм Евклида, выполним вычисления, записывая результаты отдельных шагов в таблицу 5.1.
Таблица 5.1 – Шаги расширенного алгоритма Евклида
q | u1 | u2 | u3 | vl | v2 | v3 |
4 1 1 | 0 1 -4 5 -9 | 1 0 1 -1 2 | n = 23 5 3 2 1 | 1 -4 5 -9 | 0 1 -1 2 | a = 5 3 2 1 |
При u3 = 1, u1 = -9, u2= 2
(a * u1 + n * u2) mod n = (5 * (-9) + 23 * 2) mod 23 = 5* (-9) mod 23 ≡ 1,
a-1 (mod n) = 5-1 (mod 23) = (-9) mod 23 = (-9 + 23) mod 23 = 14.
Итак, x = 5-1 (mod 23) = 14 (mod 23) = 14.
Алгоритм быстрого возведения в степень
Алгоритм быстрого возведения в степень — алгоритм, предназначенный для возведения числа x в натуральную степень n за меньшее число умножений, чем это требуется в определении.
Алгоритм не всегда оптимален. Например, при n=15 требуется 6 умножений, хотя на самом деле возведение в 15-ую степень можно выполнить за 5 умножений.
Теоретические основы алгоритма
Пусть — двоичное представление степени n. Тогда , где и .
Таким образом, алгоритм быстрого возведения в степень сводится к мультипликативному аналогу схемы Горнера.
Оценка сложности
Чтобы узнать, сколько умножений потребуется для возведения числа x в степень n алгоритмом быстрого возведения в степень, нужно произвести вычисления по следующей формуле: k = H + 2(E − 1), где H — количество нулей, а E — количество единиц в двоичной записи числа n.
Так, для возведения числа в сотую степень этим алгоритмом потребуется всего лишь 8 умножений.
Таким образом количество умножений равно O(ln n).
Вычисление степени числа а по модулю n ax mod n можно выполнить как ряд умножений и делений. Существуют способы сделать это быстрее. Поскольку эти операции дистрибутивны, быстрее произвести возведение в степень как ряд последовательных умножений, выполняя каждый раз приведение по модулю. Это особенно заметно, если работать с длинными числами (200 бит и более).
Пример
Нужно вычислить a8 mod n, не следует применять примитивный подход с выполнением семи перемножений и одного приведения по модулю громадного числа:
(a * a * a * a * a * a * a * a) mod n
Вместо этого выполняют три малых умножения и три малых приведения по модулю:
((a2 mod n)2 mod n)2 mod n.
Тем же способом вычисляют
a16 mod n = (((a2 mod n)2 mod n)2mod n)2 mod n.
Вычисление ax mod n, где х не является степенью 2, лишь немного сложнее. Двоичная запись числа х позволяет представить число х как сумму степеней 2: x = 25(10) = 1 1 0 0 1(2), поэтому 25 = 24+ 23 + 20
Тогда a25 mod n = (a * a24) mod n = (a * a8 * a16) mod n =
= a * ((a2)2)2 * (((a2)2)2)2 mod n = ((((a2 * a)2)2)2 * a) mod n.
При разумном накоплении промежуточных результатов потребуется только шесть умножений:
(((((((a2 mod n) * a) mod n)2 mod n)2 mod n)2 mod n) * a) mod n
Этот метод уменьшает трудоемкость вычислений до 1,5xk операций в среднем, где k-длина числа в битах.
ВАРИАНТЫ ЗАДАНИЙ НА РГР
6.1 Задание №1
Сообщение S зашифровано по криптосистеме RSA с открытым ключом n и e, кроме того известна функция Эйлера . Дешифруйте сообщение. Исходные данные по вариантам заданы в таблице 6.1.
Таблица 6.1 - Шифрование по криптосистеме RSA. Варианты заданий.
№ вар. | S | n | e | ||
1 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
2 | 3890-2087-3110 | 5029 | 821 | 4876 | |
3 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
4 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
5 | 1981-276-1106 | 3599 | 703 | 3480 | |
6 | 3890-2087-3110 | 5029 | 821 | 4876 | |
7 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
8 | 208-1497-793-96 | 2173 | 113 | 2080 | |
9 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
10 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
11 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
12 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
13 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
14 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
15 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
16 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
17 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
18 | 3890-2087-3110 | 5029 | 821 | 4876 | |
19 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
20 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
21 | 1981-276-1106 | 3599 | 703 | 3480 | |
22 | 3890-2087-3110 | 5029 | 821 | 4876 | |
23 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
24 | 208-1497-793-96 | 2173 | 113 | 2080 | |
25 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
26 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
27 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
28 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
29 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
30 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
№ вар. | S | n | e | ||
31 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
32 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
33 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
34 | 3890-2087-3110 | 5029 | 821 | 4876 | |
35 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
36 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
37 | 1981-276-1106 | 3599 | 703 | 3480 | |
38 | 3890-2087-3110 | 5029 | 821 | 4876 | |
39 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
40 | 208-1497-793-96 | 2173 | 113 | 2080 | |
41 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
42 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
43 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
44 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
45 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
46 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
47 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
48 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
49 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
50 | 3890-2087-3110 | 5029 | 821 | 4876 | |
51 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
52 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
53 | 1981-276-1106 | 3599 | 703 | 3480 | |
54 | 3890-2087-3110 | 5029 | 821 | 4876 | |
55 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
56 | 208-1497-793-96 | 2173 | 113 | 2080 | |
57 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
58 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
59 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
60 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
61 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
62 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
63 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
64 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
65 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
66 | 3890-2087-3110 | 5029 | 821 | 4876 | |
67 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
68 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
№ вар. | S | n | e | ||
69 | 1981-276-1106 | 3599 | 703 | 3480 | |
70 | 3890-2087-3110 | 5029 | 821 | 4876 | |
71 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
72 | 208-1497-793-96 | 2173 | 113 | 2080 | |
73 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
74 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
75 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
76 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
77 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
78 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
79 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
80 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
81 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
82 | 3890-2087-3110 | 5029 | 821 | 4876 | |
83 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
84 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
85 | 1981-276-1106 | 3599 | 703 | 3480 | |
86 | 3890-2087-3110 | 5029 | 821 | 4876 | |
87 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
88 | 208-1497-793-96 | 2173 | 113 | 2080 | |
89 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
90 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
91 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
92 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
93 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
94 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
95 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
96 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
97 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
98 | 3890-2087-3110 | 5029 | 821 | 4876 | |
99 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
100 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
101 | 1981-276-1106 | 3599 | 703 | 3480 | |
102 | 3890-2087-3110 | 5029 | 821 | 4876 | |
103 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
104 | 208-1497-793-96 | 2173 | 113 | 2080 | |
105 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
106 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
№ вар. | S | n | e | ||
107 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
108 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
109 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
110 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
111 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
112 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
113 | 1721-301-619-1207 | 4187 | 977 | 4056 | |
114 | 3890-2087-3110 | 5029 | 821 | 4876 | |
115 | 0304-0903-3376-3508 | 4171 | 853 | 4032 | |
116 | 2531-2930-732-2260 | 3589 | 713 | 3456 | |
117 | 1981-276-1106 | 3599 | 703 | 3480 | |
118 | 3890-2087-3110 | 5029 | 821 | 4876 | |
119 | 5229-3908-1176-4103 | 5429 | 2099 | 5280 | |
120 | 208-1497-793-96 | 2173 | 113 | 2080 | |
121 | 3527-3312-542-1208 | 4189 | 911 | 4060 | |
122 | 1499-3601-3292-2902 | 4453 | 937 | 4320 | |
123 | 2294-4193-3345-852 | 4757 | 941 | 4620 | |
124 | 1093-3587-2558-3981 | 5063 | 967 | 4920 | |
125 | 782-1771-1476-4121 | 5029 | 887 | 4876 | |
126 | 330-4126-3160-1828 | 5293 | 997 | 5148 | |
127 | 1945-2991-286-1986 | 4717 | 827 | 4576 | |
128 | 1149-444-3729-373 | 4187 | 821 | 4056 | |
Примечание 1. В задании для преобразования слов, состоящих из букв русского алфавита (33 буквы) и пробелов, используются соответствия между символами и числами. Пробел заменяется на 1, буква А – на 2, буква Б – на 3 и т. д., буква Я заменяется на 34. Соответствующие числа, записанные в обратном порядке, образуют числовое представление открытого текста. Например, слову ДОМ будет соответствовать число 151706.
Таблица 6.2 – Алфавит
<пробел> | А | Б | В | Г | Д | Е | Ё | Ж | З | И | Й | К | Л | М |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Н | О | П | Р | С | Т | У | Ф | Х | Ц | Ч | Ш | Щ | Ъ | Ы |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
Продолжение таблицы 6.2
Ь | Э | Ю | Я |
|
|
|
|
|
|
|
|
|
|
|
31 | 32 | 33 | 34 |
|
|
|
|
|
|
|
|
|
|
|
Примечание 2. Для вычисления секретного ключа d рекомендуется использовать расширенный алгоритм Евклида, а для возведения чисел в степень по модулю n целесообразно использовать алгоритм быстрого возведения в степень.
Задание №2
Провести идентификацию для абонента А абонентом В используя систему иденти-фикации Гиллоу-Куинскуотера. Исходные данные по вариантам заданы в таблице 6.3
Таблица 6.3 -Система идентификации Гиллоу-Куинскуотера. Варианты заданий.