domingo, 23 de enero de 2011

Criptografía 01. Aritmética modular

Es bien conocido que 2 + 2 = 4 y que no hay nada tan claro y evidente como eso. Sin embargo no todo es tan sencillo. Si estamos a las 3 de la tarde y pasan 5 horas (lo que podemos escribir como 3 + 5) estamos a las 8 de la tarde. Sin embargo si estamos a las 7 y pasan 8 horas (7 + 8) resulta que casi nadie dice que estamos a las 15 horas. Mas bien se suele decir que estamos a las 3. Esto en fórmulas se escribe 7 + 8 = 3. De igual forma podemos realizar muchas otras operaciones en un reloj. Por ejemplo 7 + 11 + 10  = 4 (pues la suma en realidad da 28). Un poco más difícil es multiplicar en un reloj, pero podemos afirmar que 6 * 7 = 6. También se pueden realizar restas: 7 - 9 = 10 (¿?) y potencias: 3^3 = 3 (¿¿¿???).
Con un poco de imaginación nos podemos imaginar relojes que en vez de 12 horas tengan, por ejemplo, 17 horas. La forma de operar en estos nuevos relojes es similar y con un poco de práctica se puede conseguir el mismo dominio que el que tenemos para manejar el reloj de 12 horas.
Aqui tenemos un archivo de Wiris en formato html donde se realizan las operaciones anteriores.
Sin embargo la forma más simple de realizar cálculos en distintos tipos de relojes consiste en utilizar el buscador WolframAlpha. Basta con añadir a la operación que queramos realizar el comando modulo 12 (u otro número si el reloj tiene un número distinto de horas). Por ejemplo para realizar la suma 7 + 11 + 10  debemos teclear
7 + 11 + 10 modulo 12
y obtenemos el resultado (además nos dibuja la solución en un reloj de 12 horas)


Tecleando 6 * 7 modulo 12 obtenemos efectivamente 6 y si introducimos 3^3 modulo 12 se obtiene un 3.

Más o menos todo el mundo está acostumbrado a poner un signo menos delante de un número y tal vez recuerde que ese número se llamaba el opuesto. Del mismo modo afirmamos que 1/7 (también escrito 7^(-1), elevándolo a lo potencia negativa) es el inverso de 7. En los relojes no todo es tan sencillo, así que lo primero que vamos a hacer es definir de nuevo los concepto de inverso y opuesto.

Definición.

Dado un reloj de n  horas y una hora a llamamos opuesto de a al único número b que cumple 

a + b = 0 modulo n

Ejemplos. 
  • En un reloj de 12 horas el opuesto de 4 es 8 puesto que si los sumamos dan cero.
  • En un reloj de 37 horas el opuesto de 5 es 32, puesto que su suma es 0.
En realidad calcular opuestos es una cosa muy sencilla. Todo se reduce a una resta. El siguiente concepto es un poco más difícil.

Definición.

Dado un reloj de  horas y una hora a llamamos inverso de a al único número b que cumple 
a * b = 1 modulo n

Ejemplos.
  • En un reloj de 12 horas el inverso de 5 es 5 puesto que 5 * 5 modulo 12 es 1.
  • En un reloj de 37 horas el inverso de 5 es 15 (se debería comprobar este hecho).
  • Si intentamos calcular el inverso de 2 en un reloj de 12 horas tropezaremos con un problema, pues resulta que es imposible.
En WolframAlpha la manera de calcular el inverso es muy sencilla: simplemente elevamos el número del que queremos hallar el inverso a la potencia -1. Por ejemplo el inverso de 5 en un reloj de 37 horas se calcula 
5^(-1) modulo 37



Si intentamos calcular el inverso de 2 en un reloj nos dice que es imposible.

No hay comentarios:

Publicar un comentario