Calculadora de exponenciación modular
Calcula b^e mod m al instante, incluso cuando la potencia tiene cientos de dígitos, mediante el rápido método de exponenciación por cuadrados y multiplicaciones. Introduce una base, un exponente no negativo y un módulo positivo y, si quieres, consulta cada paso de los cuadrados sucesivos.
Calcula una potencia módulo m
Fórmula de la exponenciación modular
Donde:
- \(b\) — la base (cualquier número entero)
- \(e\) — el exponente (un número entero no negativo)
- \(m\) — el módulo (un número entero positivo)
- \(e_k\) — los bits de \(e\) en su expansión binaria
- \(c\) — el resultado: el resto de dividir \(b^e\) entre \(m\)
La primera línea define la exponenciación modular. La segunda es la identidad de cuadrados y multiplicaciones (exponenciación binaria) que emplea la calculadora: el exponente se descompone en potencias de dos, las potencias \(b^{2^k}\) se obtienen elevando al cuadrado repetidamente y solo se multiplican entre sí las que corresponden a bits activos, todo módulo \(m\), de modo que los números intermedios nunca se desbordan.
Exponenciación modular: ejemplo de cálculo
Ejemplo: calcula \(3^{644} \bmod 645\), los valores que aparecen por defecto en la calculadora. El número \(3^{644}\) tiene 308 dígitos, así que calcular primero la potencia y reducirla después no tiene ninguna posibilidad.
Paso 1: reduce la base: \(3 \bmod 645 = 3\).
Paso 2: escribe el exponente en binario:
\[ 644 = 512 + 128 + 4 = 1010000100_2 \]
Elevando al cuadrado repetidamente módulo 645 se obtiene \(3^4 \equiv 81\), \(3^{128} \equiv 396\) y \(3^{512} \equiv 111 \pmod{645}\) para los bits activos.
Paso 3: multiplica esos valores, reduciendo módulo 645 cada vez:
\[ 3^{644} \equiv 81 \times 396 \times 111 \equiv 471 \times 111 \equiv 52281 \equiv 36 \pmod{645} \]
Resultado: \(3^{644} \bmod 645 = 36\). El algoritmo solo necesitó 9 elevaciones al cuadrado y 3 multiplicaciones: 12 operaciones modulares en lugar de las 643 que exigiría el método ingenuo.
Cómo usar la calculadora
- Introduce la Base (b): cualquier número entero, positivo o negativo.
- Introduce el Exponente (e): un número entero no negativo. Puede ser tan grande que \(b^e\) no quepa en ningún cálculo directo; para eso sirve precisamente esta herramienta.
- Introduce el Módulo (m): cualquier número entero positivo.
- Deja marcada la opción Mostrar los pasos de los cuadrados sucesivos si quieres ver la expansión binaria del exponente y una tabla con cada elevación al cuadrado; desmárcala si solo buscas el resultado.
- Consulta el Resultado (bᵉ mod m), la Base reducida (b mod m) y el desglose paso a paso.
¿Qué es la exponenciación modular?
La exponenciación modular responde a la pregunta: ¿cuál es el resto al dividir \(b^e\) entre \(m\)? El resultado siempre está entre \(0\) y \(m-1\). Dicho de otro modo, es el número \(c\) con \(0 \le c < m\) tal que \(b^e \equiv c \pmod{m}\). Por ejemplo, \(3^{644} \bmod 645 = 36\) significa que \(3^{644}\) deja un resto de 36 al dividirlo entre 645.
El método ingenuo, calcular \(b^e\) y tomar después el resto, fracasa enseguida. \(3^{644}\) ya tiene 308 dígitos, y las aplicaciones criptográficas manejan a diario exponentes de cientos de dígitos, para los cuales \(b^e\) tendría más dígitos que átomos hay en el universo. La solución es el método de cuadrados y multiplicaciones: se escribe el exponente en binario, se obtienen los valores \(b^{2^k} \bmod m\) elevando al cuadrado y reduciendo una y otra vez, y luego se multiplican solo los que corresponden a bits activos. Esto requiere apenas \(O(\log e)\) multiplicaciones modulares en lugar de \(e-1\), y como cada resultado intermedio se reduce módulo \(m\), ningún número crece más allá de aproximadamente \(m^2\).
La exponenciación modular es el caballo de batalla de la criptografía de clave pública. El cifrado y el descifrado RSA se reducen a una única exponenciación modular con un módulo enorme; el intercambio de claves de Diffie–Hellman y el esquema ElGamal también dependen de ella. Además, es la base de las pruebas de primalidad como el test de Fermat y el de Miller–Rabin, que comprueban si \(a^{n-1} \equiv 1 \pmod n\); puedes explorar la teoría de números subyacente con nuestras calculadoras del Pequeño teorema de Fermat y del Teorema de Euler.
La vista de pasos hace el algoritmo transparente: la tabla muestra cada posición de bit \(k\) del exponente junto a \(b^{2^k} \bmod m\), las filas en negrita son las que se usan realmente y su producto (reducido módulo \(m\)) es la respuesta. Es exactamente lo que hacen internamente los sistemas de álgebra computacional, y verlo una vez es la mejor forma de entender por qué los exponentes gigantes salen tan baratos.
Supuestos, límites y consejos
- El exponente debe ser no negativo. Un exponente negativo exigiría el inverso modular de \(b\), que solo existe cuando \(\gcd(b, m) = 1\). Para ese caso, calcula primero el inverso con nuestra calculadora de Inverso multiplicativo módulo y usa luego su resultado como base con un exponente positivo.
- El módulo debe ser positivo. Si \(m = 1\), todo entero es congruente con 0, así que el resultado es 0: es matemáticamente correcto, no un error.
- Las bases negativas no dan problema. La base se reduce primero a su menor resto no negativo \(b \bmod m\), de modo que \(-12\) y \(m - 12\) dan el mismo resultado.
- El exponente 0 da \(1 \bmod m\) (que solo vale 0 cuando \(m = 1\)), en coherencia con \(b^0 = 1\).
- Límites de tamaño: la base y el módulo pueden tener hasta 1000 dígitos cada uno, y el exponente puede llegar a \(10^{18}\). Como el algoritmo es logarítmico en el exponente, incluso ese tamaño se calcula al instante.
- Comprueba los resultados por otra vía: con un módulo compuesto puedes partir el cálculo en potencias de primos y recombinarlas; prueba nuestra calculadora del Teorema chino del resto para verificar los resultados de forma independiente.
Preguntas frecuentes
¿Cómo calculo una potencia módulo m a mano?
Usa el método de cuadrados y multiplicaciones. Primero reduce la base: sustituye b por \(b \bmod m\). Después escribe el exponente en binario y eleva la base al cuadrado repetidamente, reduciendo módulo m tras cada paso: \(b^2, b^4, b^8, b^{16}, \ldots\). Por último, multiplica solo los valores elevados al cuadrado que correspondan a los bits 1 del exponente, reduciendo módulo m cada vez. Así, todos los números intermedios se mantienen por debajo de \(m^2\).
¿Por qué el resultado de b^e mod m está siempre entre 0 y m-1?
Porque la aritmética modular trabaja con los menores restos no negativos. La expresión \(b^e \bmod m\) se define como el resto de dividir \(b^e\) entre \(m\), y los restos de una división siempre cumplen \(0 \le c \le m-1\). Aunque la base sea negativa, antes se convierte a su residuo positivo equivalente, así que la respuesta nunca es negativa.
¿Cuál es la última cifra de una potencia grande (por ejemplo, 7^100)?
Es una exponenciación modular disfrazada: la última cifra de un número es ese número módulo 10. Calcula aquí \(7^{100} \bmod 10\). Del mismo modo, las dos últimas cifras son el valor módulo 100 y las tres últimas, el valor módulo 1000. Es el atajo clásico de los problemas de olimpiadas y de deberes sobre cifras finales.
¿Qué ocurre si el exponente es 0 o el módulo es 1?
Con \(e = 0\) el resultado es \(1 \bmod m\), que vale 1 para todo módulo salvo \(m = 1\), donde vale 0, ya que todo entero es congruente con 0 módulo 1. Estos casos límite se tratan correctamente, y \(m = 1\) devuelve siempre 0 para cualquier base y exponente, lo cual es matemáticamente correcto y no un error.
¿Puedo usar una base o un exponente negativo?
Las bases negativas no dan problema: la calculadora las reduce antes a un residuo positivo equivalente, así que \(-12\) se comporta como \(m - 12\). Los exponentes negativos no están admitidos, porque exigirían el inverso modular de la base, que solo existe cuando \(\gcd(b, m) = 1\). Para sortearlo, calcula primero \(b^{-1} \bmod m\) y eleva ese valor a la potencia \(|e|\).
¿Cómo se usa la exponenciación modular en RSA y en criptografía?
El cifrado y el descifrado RSA son cada uno una única exponenciación modular \(c = m^e \bmod n\) con un módulo de 2048 bits o más, justo lo que el método de cuadrados y multiplicaciones calcula con eficiencia. El intercambio de claves de Diffie–Hellman y ElGamal funcionan igual. La rapidez \(O(\log e)\) del método hace viables los exponentes gigantes, mientras que la dificultad de invertir la operación sin la clave secreta mantiene seguros estos esquemas.
¿Cuál es el error más común al calcular b^e mod m?
El fallo más habitual es calcular \(b^e\) primero y tomar el resto después: la potencia se vuelve astronómicamente grande enseguida y desborda la calculadora o resulta imposible de escribir. Reduce módulo m tras cada elevación al cuadrado y cada multiplicación. Otro desliz frecuente es olvidar que \(b^0 \bmod 1 = 0\), y no 1, porque todo entero es congruente con 0 módulo 1.