Ir ao conteúdo principal

Seção 4.3 El método de los cuadrados repetidos

Calcular potencias grandes puede tomar mucho tiempo. Así como cualquiera puede calcular 22 o 28, cualquiera sabe como calcular

221000000.

Sin embargo, tales número son tan grandes que no quisiéramos siquiera intentar hacer los cálculos; Más aún, después de cierto punto, el cálculo no sería realizable aunque tuviéramos a nuestra disposición todos los computadores del mundo. Incluso escribir la representación decimal de un número demasiado grande puede no ser práctico. Podría tener miles o incluso millones de dígitos. Sin embargo, si pudiéramos calcular algo como

237398332(mod46389),

podríamos fácilmente escribir el resultado pues sería un número entre 0 y 46,388. Si queremos calcular potencias módulo n rápida y eficientemente, deberemos ser astutos. 1 

Lo primero que debemos notar es que cualquier número a se puede escribir como una suma de potencias de 2 distintas; es decir, podemos escribir

a=2k1+2k2++2kn,

con k1<k2<<kn. Esto es simplemente la representación binaria de a. Por ejemplo, la representación binaria de 57 es 111001, pues 57=20+23+24+25.

La reglas de los exponentes se cumplen en Zn; es decir, si bax(modn) y cay(modn), entonces bcax+y(modn). Podemos calcular a2k(modn) en k pasos calculando

a20(modn)a21(modn)a2k(modn).

Cada paso corresponde a elevar al cuadrado el resultado obtenido en el paso anterior, dividir por n, y dejar el resto.

Calcularemos 271321(mod481). Note que

321=20+26+28;

luego, calcular 271321(mod481) es lo mismo que calcular

27120+26+28271202712627128(mod481).

Será suficiente con calcular 2712i(mod481) con i=0,6,8. Es muy fácil ver que

27121=73,441329(mod481).

Podemos elevar al cuadrado este resultado, obteniéndo un valor para 27122(mod481):

27122(27121)2(mod481)(329)2(mod481)108,241(mod481)16(mod481).

Estamos usando el hecho que (a2n)2a22na2n+1(modn). Continuando, podemos calcular

27126419(mod481)

y

2712816(mod481).

Por lo tanto,

27132127120+26+28(mod481)271202712627128(mod481)27141916(mod481)1,816,784(mod481)47(mod481).

El método de los cuadrado repretido resultará ser una herramienta muy útil cuando exploremos la criptografía RSA en el Capítulo 7. Para codificar y decodificar mensaje de forma razonable, será necesario poder calcular grandes potencias de enteros mód n de forma rápida.

Sage.

La implementación de los grupos cíclicos en Sage es algo débil — pero igual podemos hacer uso provechoso de Sage y quizás esta situación cambie pronto.

Los resultados de esta sección solo serán necesarios en el Capítulo 7