1. C´lculo de potencias modulares
a
Jes´s Garc´ de Jal´n de la Fuente
u ıa o
IES Avenida de los Toreros
Madrid
2009-11-02
C´lculo de potencias modulares
a
2. Introducci´n
o
El problema que consideramos consiste en el c´lculo de potencias
a
modulares:
an (m´d m)
o
esto es, el resto de dividir an entre m.
C´lculo de potencias modulares
a
3. Introducci´n
o
El problema que consideramos consiste en el c´lculo de potencias
a
modulares:
an (m´d m)
o
esto es, el resto de dividir an entre m.
Tanto a como n y m son enteros positivos muy grandes.
C´lculo de potencias modulares
a
4. Introducci´n
o
El problema que consideramos consiste en el c´lculo de potencias
a
modulares:
an (m´d m)
o
esto es, el resto de dividir an entre m.
Tanto a como n y m son enteros positivos muy grandes.
Por ejemplo el n´mero 65418914 es un n´mero gigantesco de m´s
u u a
de 30000 cifras.
C´lculo de potencias modulares
a
5. Introducci´n
o
El problema que consideramos consiste en el c´lculo de potencias
a
modulares:
an (m´d m)
o
esto es, el resto de dividir an entre m.
Tanto a como n y m son enteros positivos muy grandes.
Por ejemplo el n´mero 65418914 es un n´mero gigantesco de m´s
u u a
de 30000 cifras.
Imaginemos cu´ntas cifras puede tener la potencia si la base y el
a
exponente tienen 50 cifras.
C´lculo de potencias modulares
a
6. El problema
Vamos a calcular una potencia con n´meros de cuatro cifras. Por
u
ejemplo:
65418914 (m´d 7789)
o
C´lculo de potencias modulares
a
7. El problema
Vamos a calcular una potencia con n´meros de cuatro cifras. Por
u
ejemplo:
65418914 (m´d 7789)
o
En un criptosistema real, estos n´meros deber´ ser mucho
u ıan
mayores (cincuenta o m´s cifras).
a
C´lculo de potencias modulares
a
8. El problema
Vamos a calcular una potencia con n´meros de cuatro cifras. Por
u
ejemplo:
65418914 (m´d 7789)
o
En un criptosistema real, estos n´meros deber´ ser mucho
u ıan
mayores (cincuenta o m´s cifras).
a
Veremos que, en cualquier caso, existe un algoritmo que permite
calcular la potencia.
C´lculo de potencias modulares
a
9. Estrategias err´neas
o
Se podr´ pensar en calcular la potencia 65418914 y despu´s
ıa e
dividir por 7789. Pero:
C´lculo de potencias modulares
a
10. Estrategias err´neas
o
Se podr´ pensar en calcular la potencia 65418914 y despu´s
ıa e
dividir por 7789. Pero:
La potencia tiene m´s de 30000 cifras.
a
C´lculo de potencias modulares
a
11. Estrategias err´neas
o
Se podr´ pensar en calcular la potencia 65418914 y despu´s
ıa e
dividir por 7789. Pero:
La potencia tiene m´s de 30000 cifras.
a
Si la base y el exponente son n´meros muy grandes, el c´lculo se
u a
vuelve imposible.
C´lculo de potencias modulares
a
12. Estrategias err´neas
o
Se podr´ pensar en calcular la potencia 65418914 y despu´s
ıa e
dividir por 7789. Pero:
La potencia tiene m´s de 30000 cifras.
a
Si la base y el exponente son n´meros muy grandes, el c´lculo se
u a
vuelve imposible.
Tampoco servir´ calcular la potencia mediante productos y a la
ıa
vez ir reduciendo m´dulo 7789:
o
C´lculo de potencias modulares
a
13. Estrategias err´neas
o
Se podr´ pensar en calcular la potencia 65418914 y despu´s
ıa e
dividir por 7789. Pero:
La potencia tiene m´s de 30000 cifras.
a
Si la base y el exponente son n´meros muy grandes, el c´lculo se
u a
vuelve imposible.
Tampoco servir´ calcular la potencia mediante productos y a la
ıa
vez ir reduciendo m´dulo 7789:
o
Por una parte, se evita que los n´meros se hagan grandes
u
(siempre ser´n menores que el m´dulo)
a o
C´lculo de potencias modulares
a
14. Estrategias err´neas
o
Se podr´ pensar en calcular la potencia 65418914 y despu´s
ıa e
dividir por 7789. Pero:
La potencia tiene m´s de 30000 cifras.
a
Si la base y el exponente son n´meros muy grandes, el c´lculo se
u a
vuelve imposible.
Tampoco servir´ calcular la potencia mediante productos y a la
ıa
vez ir reduciendo m´dulo 7789:
o
Por una parte, se evita que los n´meros se hagan grandes
u
(siempre ser´n menores que el m´dulo)
a o
Si la base y el exponente son muy grandes el n´mero de
u
multiplicaciones y divisiones ser´ enorme (en nuestro ejemplo
a
8913 multiplicaciones y el mismo n´mero de divisiones).
u
C´lculo de potencias modulares
a
15. El algoritmo I
Expresamos el exponente 8914 como suma de potencias de 2. Esto
se puede conseguir a partir de la expresi´n binaria del n´mero:
o u
8914 = 10001011010010(2)
C´lculo de potencias modulares
a
16. El algoritmo I
Expresamos el exponente 8914 como suma de potencias de 2. Esto
se puede conseguir a partir de la expresi´n binaria del n´mero:
o u
8914 = 10001011010010(2)
Esto significa que:
8914 = 2 + 16 + 64 + 128 + 512 + 8192
C´lculo de potencias modulares
a
17. El algoritmo I
Expresamos el exponente 8914 como suma de potencias de 2. Esto
se puede conseguir a partir de la expresi´n binaria del n´mero:
o u
8914 = 10001011010010(2)
Esto significa que:
8914 = 2 + 16 + 64 + 128 + 512 + 8192
Por consiguiente:
65418914 = 65412+16+64+128+512+8192
= 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
C´lculo de potencias modulares
a
18. El algoritmo II
Seg´n hemos visto, basta calcular las potencias cuyo exponente
u
sea una potencia de 2.
Estas potencias se pueden calcular cada una de la anterior
elevando al cuadrado. Para evitar que este n´mero se haga
u
grande se reduce m´dulo 7789.
o
Por ejemplo (los c´lculos son m´dulo 7789):
a o
65412 ≡ 42784681 ≡ 7493 (m´d 7789)
o
4 2
6541 ≡ 7493 ≡ 56145049 ≡ 1937 (m´d 7789)
o
8 2
6541 ≡ 1937 ≡ 3751969 ≡ 5460 (m´d 7789)
o
El resto de potencias puede verse en la p´gina siguiente.
a
C´lculo de potencias modulares
a
19. El algoritmo III
65412 ≡ 42784681 ≡ 7493 (m´d 7789)
o
4 2
6541 ≡ 7493 ≡ 56145049 ≡ 1937 (m´d 7789)
o
8 2
6541 ≡ 1937 ≡ 3751969 ≡ 5460 (m´d 7789)
o
16 2
6541 ≡ 5460 ≡ 29811600 ≡ 3097 (m´d 7789)
o
32 2
6541 ≡ 3097 ≡ 9591409 ≡ 3150 (m´d 7789)
o
64 2
6541 ≡ 3150 ≡ 9922500 ≡ 7103 (m´d 7789)
o
128 2
6541 ≡ 7103 ≡ 50452609 ≡ 3256 (m´d 7789)
o
256 2
6541 ≡ 3256 ≡ 10601536 ≡ 707 (m´d 7789)
o
512 2
6541 ≡ 707 ≡ 499849 ≡ 1353 (m´d 7789)
o
1024 2
6541 ≡ 1353 ≡ 1830609 ≡ 194 (m´d 7789)
o
2048 2
6541 ≡ 194 ≡ 37636 ≡ 6480 (m´d 7789)
o
4096 2
6541 ≡ 6480 ≡ 41990400 ≡ 7690 (m´d 7789)
o
8192 2
6541 ≡ 7690 ≡ 59136100 ≡ 2012 (m´d 7789)
o
C´lculo de potencias modulares
a
20. El algoritmo IV
Ahora puesto que:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
C´lculo de potencias modulares
a
21. El algoritmo IV
Ahora puesto que:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
Sustituimos las potencias y reducimos cada producto m´dulo
o
7789:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
≡ 7493 · 3097 · 7103 · 3256 · 1353 · 2012
≡ 23205821 · 23127368 · 2722236
≡ 2390 · 1827 · 3875
≡ 4366530 · 3875
≡ 4690 · 3875
≡ 18173750 ≡ 2013 (m´d 7789)
o
C´lculo de potencias modulares
a
22. El algoritmo IV
Ahora puesto que:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
Sustituimos las potencias y reducimos cada producto m´dulo
o
7789:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
≡ 7493 · 3097 · 7103 · 3256 · 1353 · 2012
≡ 23205821 · 23127368 · 2722236
≡ 2390 · 1827 · 3875
≡ 4366530 · 3875
≡ 4690 · 3875
≡ 18173750 ≡ 2013 (m´d 7789)
o
Han sido suficientes 18 multiplicaciones y divisiones para obtener
el resultado.
C´lculo de potencias modulares
a
23. Conclusi´n
o
El algoritmo para calcular potencias modulares consiste en lo
siguiente:
1 Descomponer el exponente en suma de potencias de 2.
C´lculo de potencias modulares
a
24. Conclusi´n
o
El algoritmo para calcular potencias modulares consiste en lo
siguiente:
1 Descomponer el exponente en suma de potencias de 2.
2 Calcular las potencias modulares cuyo exponente es una potencia
de 2. Estas potencias pueden obtenerse cada una de la anterior
elevando al cuadrado y reduciendo.
C´lculo de potencias modulares
a
25. Conclusi´n
o
El algoritmo para calcular potencias modulares consiste en lo
siguiente:
1 Descomponer el exponente en suma de potencias de 2.
2 Calcular las potencias modulares cuyo exponente es una potencia
de 2. Estas potencias pueden obtenerse cada una de la anterior
elevando al cuadrado y reduciendo.
3 Multiplicar las potencias cuyos exponentes aparezcan en la
descomposici´n del apartado 1 y reducir cada producto con el
o
m´dulo.
o
C´lculo de potencias modulares
a
26. Implementaci´n en una hoja de c´lculo I
o a
El c´lculo de la potencia ae (m´d p) puede programarse f´cilmente
a o a
en una hoja de c´lculo definiendo las siguientes sucesiones por
a
recurrencia:
xn
x1 = e, xn+1 = int 2
2
y1 = a, yn+1 = yn mod p
zn si xn es par
z1 = 1, zn+1 =
yn zn si xn es impar
El valor de zn cuando xn = 0 es el valor de la potencia.
C´lculo de potencias modulares
a