potencias modulares
Post on 18-Dec-2014
4.965 Views
Preview:
DESCRIPTION
TRANSCRIPT
Calculo de potencias modulares
Jesus Garcıa de Jalon de la Fuente
IES Avenida de los TorerosMadrid
2009-11-02
Calculo de potencias modulares
Introduccion
� El problema que consideramos consiste en el calculo de potenciasmodulares:
an (mod m)
esto es, el resto de dividir an entre m.
� Tanto a como n y m son enteros positivos muy grandes.� Por ejemplo el numero 65418914 es un numero gigantesco de mas
de 30000 cifras.� Imaginemos cuantas cifras puede tener la potencia si la base y el
exponente tienen 50 cifras.
Calculo de potencias modulares
Introduccion
� El problema que consideramos consiste en el calculo de potenciasmodulares:
an (mod m)
esto es, el resto de dividir an entre m.� Tanto a como n y m son enteros positivos muy grandes.
� Por ejemplo el numero 65418914 es un numero gigantesco de masde 30000 cifras.
� Imaginemos cuantas cifras puede tener la potencia si la base y elexponente tienen 50 cifras.
Calculo de potencias modulares
Introduccion
� El problema que consideramos consiste en el calculo de potenciasmodulares:
an (mod m)
esto es, el resto de dividir an entre m.� Tanto a como n y m son enteros positivos muy grandes.� Por ejemplo el numero 65418914 es un numero gigantesco de mas
de 30000 cifras.
� Imaginemos cuantas cifras puede tener la potencia si la base y elexponente tienen 50 cifras.
Calculo de potencias modulares
Introduccion
� El problema que consideramos consiste en el calculo de potenciasmodulares:
an (mod m)
esto es, el resto de dividir an entre m.� Tanto a como n y m son enteros positivos muy grandes.� Por ejemplo el numero 65418914 es un numero gigantesco de mas
de 30000 cifras.� Imaginemos cuantas cifras puede tener la potencia si la base y el
exponente tienen 50 cifras.
Calculo de potencias modulares
El problema
� Vamos a calcular una potencia con numeros de cuatro cifras. Porejemplo:
65418914 (mod 7789)
� En un criptosistema real, estos numeros deberıan ser muchomayores (cincuenta o mas cifras).
� Veremos que, en cualquier caso, existe un algoritmo que permitecalcular la potencia.
Calculo de potencias modulares
El problema
� Vamos a calcular una potencia con numeros de cuatro cifras. Porejemplo:
65418914 (mod 7789)
� En un criptosistema real, estos numeros deberıan ser muchomayores (cincuenta o mas cifras).
� Veremos que, en cualquier caso, existe un algoritmo que permitecalcular la potencia.
Calculo de potencias modulares
El problema
� Vamos a calcular una potencia con numeros de cuatro cifras. Porejemplo:
65418914 (mod 7789)
� En un criptosistema real, estos numeros deberıan ser muchomayores (cincuenta o mas cifras).
� Veremos que, en cualquier caso, existe un algoritmo que permitecalcular la potencia.
Calculo de potencias modulares
Estrategias erroneas
� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:
La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.
� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:
Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).
Calculo de potencias modulares
Estrategias erroneas
� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:
La potencia tiene mas de 30000 cifras.
Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.
� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:
Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).
Calculo de potencias modulares
Estrategias erroneas
� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:
La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.
� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:
Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).
Calculo de potencias modulares
Estrategias erroneas
� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:
La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.
� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:
Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).
Calculo de potencias modulares
Estrategias erroneas
� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:
La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.
� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:
Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)
Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).
Calculo de potencias modulares
Estrategias erroneas
� Se podrıa pensar en calcular la potencia 65418914 y despuesdividir por 7789. Pero:
La potencia tiene mas de 30000 cifras.Si la base y el exponente son numeros muy grandes, el calculo sevuelve imposible.
� Tampoco servirıa calcular la potencia mediante productos y a lavez ir reduciendo modulo 7789:
Por una parte, se evita que los numeros se hagan grandes(siempre seran menores que el modulo)Si la base y el exponente son muy grandes el numero demultiplicaciones y divisiones sera enorme (en nuestro ejemplo8913 multiplicaciones y el mismo numero de divisiones).
Calculo de potencias modulares
El algoritmo I
� Expresamos el exponente 8914 como suma de potencias de 2. Estose puede conseguir a partir de la expresion binaria del numero:
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
Calculo de potencias modulares
El algoritmo I
� Expresamos el exponente 8914 como suma de potencias de 2. Estose puede conseguir a partir de la expresion binaria del numero:
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
Calculo de potencias modulares
El algoritmo I
� Expresamos el exponente 8914 como suma de potencias de 2. Estose puede conseguir a partir de la expresion binaria del numero:
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
Calculo de potencias modulares
El algoritmo II
� Segun hemos visto, basta calcular las potencias cuyo exponentesea una potencia de 2.
� Estas potencias se pueden calcular cada una de la anteriorelevando al cuadrado. Para evitar que este numero se hagagrande se reduce modulo 7789.
� Por ejemplo (los calculos son modulo 7789):
65412 ≡ 42784681 ≡ 7493 (mod 7789)
65414 ≡ 74932 ≡ 56145049 ≡ 1937 (mod 7789)
65418 ≡ 19372 ≡ 3751969 ≡ 5460 (mod 7789)
� El resto de potencias puede verse en la pagina siguiente.
Calculo de potencias modulares
El algoritmo III
65412 ≡ 42784681 ≡ 7493 (mod 7789)
65414 ≡ 74932 ≡ 56145049 ≡ 1937 (mod 7789)
65418 ≡ 19372 ≡ 3751969 ≡ 5460 (mod 7789)
654116 ≡ 54602 ≡ 29811600 ≡ 3097 (mod 7789)
654132 ≡ 30972 ≡ 9591409 ≡ 3150 (mod 7789)
654164 ≡ 31502 ≡ 9922500 ≡ 7103 (mod 7789)
6541128 ≡ 71032 ≡ 50452609 ≡ 3256 (mod 7789)
6541256 ≡ 32562 ≡ 10601536 ≡ 707 (mod 7789)
6541512 ≡ 7072 ≡ 499849 ≡ 1353 (mod 7789)
65411024 ≡ 13532 ≡ 1830609 ≡ 194 (mod 7789)
65412048 ≡ 1942 ≡ 37636 ≡ 6480 (mod 7789)
65414096 ≡ 64802 ≡ 41990400 ≡ 7690 (mod 7789)
65418192 ≡ 76902 ≡ 59136100 ≡ 2012 (mod 7789)
Calculo de potencias modulares
El algoritmo IV
� Ahora puesto que:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
� Sustituimos las potencias y reducimos cada producto modulo7789:
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 (mod 7789)
� Han sido suficientes 18 multiplicaciones y divisiones para obtenerel resultado.
Calculo de potencias modulares
El algoritmo IV
� Ahora puesto que:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
� Sustituimos las potencias y reducimos cada producto modulo7789:
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 (mod 7789)
� Han sido suficientes 18 multiplicaciones y divisiones para obtenerel resultado.
Calculo de potencias modulares
El algoritmo IV
� Ahora puesto que:
65418914 = 65412 · 654116 · 654164 · 6541128 · 6541512 · 65418192
� Sustituimos las potencias y reducimos cada producto modulo7789:
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 (mod 7789)
� Han sido suficientes 18 multiplicaciones y divisiones para obtenerel resultado.
Calculo de potencias modulares
Conclusion
El algoritmo para calcular potencias modulares consiste en losiguiente:
1 Descomponer el exponente en suma de potencias de 2.
2 Calcular las potencias modulares cuyo exponente es una potenciade 2. Estas potencias pueden obtenerse cada una de la anteriorelevando al cuadrado y reduciendo.
3 Multiplicar las potencias cuyos exponentes aparezcan en ladescomposicion del apartado 1 y reducir cada producto con elmodulo.
Calculo de potencias modulares
Conclusion
El algoritmo para calcular potencias modulares consiste en losiguiente:
1 Descomponer el exponente en suma de potencias de 2.
2 Calcular las potencias modulares cuyo exponente es una potenciade 2. Estas potencias pueden obtenerse cada una de la anteriorelevando al cuadrado y reduciendo.
3 Multiplicar las potencias cuyos exponentes aparezcan en ladescomposicion del apartado 1 y reducir cada producto con elmodulo.
Calculo de potencias modulares
Conclusion
El algoritmo para calcular potencias modulares consiste en losiguiente:
1 Descomponer el exponente en suma de potencias de 2.
2 Calcular las potencias modulares cuyo exponente es una potenciade 2. Estas potencias pueden obtenerse cada una de la anteriorelevando al cuadrado y reduciendo.
3 Multiplicar las potencias cuyos exponentes aparezcan en ladescomposicion del apartado 1 y reducir cada producto con elmodulo.
Calculo de potencias modulares
Implementacion en una hoja de calculo I
El calculo de la potencia ae (mod p) puede programarse facilmenteen una hoja de calculo definiendo las siguientes sucesiones porrecurrencia:
x1 = e, xn+1 = int(
xn
2
)y1 = a, yn+1 = y2
n mod p
z1 = 1, zn+1 =
{zn si xn es parynzn si xn es impar
El valor de zn cuando xn = 0 es el valor de la potencia.
Calculo de potencias modulares
Implementacion en una hoja de calculo II
Calculo de potencias modulares
top related