Алгоритм последовательного возведения в квадрат

Алгоритм последовательного возведения в квадрат

(https://granitnayki.com/?cat=6)

Пусть необходимо вычислить

y = ax mod n,

где a – неотрицательное целое число, меньшее n (a < n), x ³ 0.

Для вычисления y = ax mod n применяем

1. Если , то закончить работу алгоритма.

2. , , где - длина x в битах.

3. Для i от k до 0 выполнить шаги 4 и 5.

4. .

5. Если i-й бит x =1, то .

6. Закончить работу алгоритма.

Этот алгоритм называется также SX-алгоритмом (https://granitnayki.com/?cat=6). Смысл такого названия состоит в следующем: считаем, что S(squaring) соответствует операции возведения в квадрат, а X – операции умножения на основание. К примеру, возведем основание a в степень 23 по модулю p. Запишем 23 в двоичной системе счисления как 10111. Далее, пропуская самый левый бит, который всегда равен 1 запишем под каждой цифрой 1 SX, а под каждой цифрой 0 – X.

         
  S SX SX SX

Двигаясь слева направо, получим определяющую строку SSXSXSX. Помня, что S – это возведение в квадрат, а X – умножение на основание, получаем следующую последовательность операций:

(((((((((((a2mod n)2)mod n)*a) mod n)2 mod n)*a) mod n)2 modn)*a) mod n)=a23 mod n,

что соответствует действительности.

Пример. Вычислить 218 mod 13, параметры: a = 2, k = 18, n =13.

x = 24 +21® (1, 0, 0, 1, 0)

1. y:=2

2. k:=3

3(4-5). i = 3 x 3 = 0 y:=22 mod 13 = 4

i = 2 x 2 = 0 y:=42 mod 13 = 3

i = 1 x 1=1 y:=32 mod 13 = 9 y:=y*2 mod 13=5 y=5

i = 0 x 0=0 y:=52 mod 13 = 12

6. y = 12

Таким образом, 218 mod 13 = 12.

Контрольные вопросы

1. Опишите алгоритм последовательного возведения в квадрат.

2. В каких криптографических алгоритмах необходимо вычислять степени числа по модулю?



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: