При заданных неотрицательных целых числах а и 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 -Система идентификации Гиллоу-Куинскуотера. Варианты заданий.






