Anda di halaman 1dari 27

Clculo de potencias modulares a

Jess Garc de Jaln de la Fuente u a o


IES Avenida de los Toreros Madrid

2009-11-02

Clculo de potencias modulares a

Introduccin o

El problema que consideramos consiste en el clculo de potencias a modulares: an (md m) o esto es, el resto de dividir an entre m.

Clculo de potencias modulares a

Introduccin o

El problema que consideramos consiste en el clculo de potencias a modulares: an (md m) o esto es, el resto de dividir an entre m. Tanto a como n y m son enteros positivos muy grandes.

Clculo de potencias modulares a

Introduccin o

El problema que consideramos consiste en el clculo de potencias a modulares: an (md 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 nmero 65418914 es un nmero gigantesco de ms u u a de 30000 cifras.

Clculo de potencias modulares a

Introduccin o

El problema que consideramos consiste en el clculo de potencias a modulares: an (md 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 nmero 65418914 es un nmero gigantesco de ms u u a de 30000 cifras. Imaginemos cuntas cifras puede tener la potencia si la base y el a exponente tienen 50 cifras.

Clculo de potencias modulares a

El problema

Vamos a calcular una potencia con nmeros de cuatro cifras. Por u ejemplo: 65418914 (md 7789) o

Clculo de potencias modulares a

El problema

Vamos a calcular una potencia con nmeros de cuatro cifras. Por u ejemplo: 65418914 (md 7789) o En un criptosistema real, estos nmeros deber ser mucho u an mayores (cincuenta o ms cifras). a

Clculo de potencias modulares a

El problema

Vamos a calcular una potencia con nmeros de cuatro cifras. Por u ejemplo: 65418914 (md 7789) o En un criptosistema real, estos nmeros deber ser mucho u an mayores (cincuenta o ms cifras). a Veremos que, en cualquier caso, existe un algoritmo que permite calcular la potencia.

Clculo de potencias modulares a

Estrategias errneas o

Se podr pensar en calcular la potencia 65418914 y despus a e dividir por 7789. Pero:

Clculo de potencias modulares a

Estrategias errneas o

Se podr pensar en calcular la potencia 65418914 y despus a e dividir por 7789. Pero:
La potencia tiene ms de 30000 cifras. a

Clculo de potencias modulares a

Estrategias errneas o

Se podr pensar en calcular la potencia 65418914 y despus a e dividir por 7789. Pero:
La potencia tiene ms de 30000 cifras. a Si la base y el exponente son nmeros muy grandes, el clculo se u a vuelve imposible.

Clculo de potencias modulares a

Estrategias errneas o

Se podr pensar en calcular la potencia 65418914 y despus a e dividir por 7789. Pero:
La potencia tiene ms de 30000 cifras. a Si la base y el exponente son nmeros muy grandes, el clculo se u a vuelve imposible.

Tampoco servir calcular la potencia mediante productos y a la a vez ir reduciendo mdulo 7789: o

Clculo de potencias modulares a

Estrategias errneas o

Se podr pensar en calcular la potencia 65418914 y despus a e dividir por 7789. Pero:
La potencia tiene ms de 30000 cifras. a Si la base y el exponente son nmeros muy grandes, el clculo se u a vuelve imposible.

Tampoco servir calcular la potencia mediante productos y a la a vez ir reduciendo mdulo 7789: o
Por una parte, se evita que los nmeros se hagan grandes u (siempre sern menores que el mdulo) a o

Clculo de potencias modulares a

Estrategias errneas o

Se podr pensar en calcular la potencia 65418914 y despus a e dividir por 7789. Pero:
La potencia tiene ms de 30000 cifras. a Si la base y el exponente son nmeros muy grandes, el clculo se u a vuelve imposible.

Tampoco servir calcular la potencia mediante productos y a la a vez ir reduciendo mdulo 7789: o
Por una parte, se evita que los nmeros se hagan grandes u (siempre sern menores que el mdulo) a o Si la base y el exponente son muy grandes el nmero de u multiplicaciones y divisiones ser enorme (en nuestro ejemplo a 8913 multiplicaciones y el mismo nmero de divisiones). u

Clculo de potencias modulares a

El algoritmo I

Expresamos el exponente 8914 como suma de potencias de 2. Esto se puede conseguir a partir de la expresin binaria del nmero: o u 8914 = 10001011010010(2)

Clculo de potencias modulares a

El algoritmo I

Expresamos el exponente 8914 como suma de potencias de 2. Esto se puede conseguir a partir de la expresin binaria del nmero: o u 8914 = 10001011010010(2) Esto signica que: 8914 = 2 + 16 + 64 + 128 + 512 + 8192

Clculo de potencias modulares a

El algoritmo I

Expresamos el exponente 8914 como suma de potencias de 2. Esto se puede conseguir a partir de la expresin binaria del nmero: o u 8914 = 10001011010010(2) Esto signica que: 8914 = 2 + 16 + 64 + 128 + 512 + 8192 Por consiguiente: 65418914 = 65412+16+64+128+512+8192 = 65412 654116 654164 6541128 6541512 65418192

Clculo de potencias modulares a

El algoritmo II

Segn 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 nmero se haga u grande se reduce mdulo 7789. o Por ejemplo (los clculos son mdulo 7789): a o 65412
4 2 8 2

42784681 7493

(md 7789) o (md 7789) o (md 7789) o

6541 7493 56145049 1937 6541 1937 3751969 5460

El resto de potencias puede verse en la pgina siguiente. a

Clculo de potencias modulares a

El algoritmo III
65412
4 2 8 2

42784681 7493

(md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o (md 7789) o

6541 7493 56145049 1937 6541 1937 3751969 5460 6541


16 32

5460 29811600 3097 3097 9591409 3150 3150 9922500 7103 7103 50452609 3256 3256 10601536 707 707 194
2 2 2 2 2 2

6541 6541 6541 6541 6541 6541 6541 6541 6541

64

128 256 512

499849 37636
2 2

1353 6480

1024

1353 1830609 194


2

2048

4096

6480 41990400 7690 7690 59136100 2012

8192

Clculo de potencias modulares a

El algoritmo IV
Ahora puesto que: 65418914 = 65412 654116 654164 6541128 6541512 65418192

Clculo de potencias modulares a

El algoritmo IV
Ahora puesto que: 65418914 = 65412 654116 654164 6541128 6541512 65418192 Sustituimos las potencias y reducimos cada producto mdulo 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 (md 7789) o

Clculo de potencias modulares a

El algoritmo IV
Ahora puesto que: 65418914 = 65412 654116 654164 6541128 6541512 65418192 Sustituimos las potencias y reducimos cada producto mdulo 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 (md 7789) o Han sido sucientes 18 multiplicaciones y divisiones para obtener el resultado.
Clculo de potencias modulares a

Conclusin o

El algoritmo para calcular potencias modulares consiste en lo siguiente:


1

Descomponer el exponente en suma de potencias de 2.

Clculo de potencias modulares a

Conclusin o

El algoritmo para calcular potencias modulares consiste en lo siguiente:


1

Descomponer el exponente en suma de potencias de 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.

Clculo de potencias modulares a

Conclusin o

El algoritmo para calcular potencias modulares consiste en lo siguiente:


1

Descomponer el exponente en suma de potencias de 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. Multiplicar las potencias cuyos exponentes aparezcan en la descomposicin del apartado 1 y reducir cada producto con el o mdulo. o

Clculo de potencias modulares a

Implementacin en una hoja de clculo I o a

El clculo de la potencia ae (md p) puede programarse fcilmente a o a en una hoja de clculo deniendo las siguientes sucesiones por a recurrencia: x1 = e, xn+1 = int
xn 2

2 y1 = a, yn+1 = yn mod p

z1 = 1, zn+1 =

zn yn zn

si xn es par si xn es impar

El valor de zn cuando xn = 0 es el valor de la potencia.

Clculo de potencias modulares a

Implementacin en una hoja de clculo II o a

Clculo de potencias modulares a