RESTO DE LA DIVISION ENTERA COMO APLICACIÓN DIDÁCTICA A LA CRIPTOGRAFÍA  

En nuestros días y lejos ya de la comunicación entre personas a través del correo postal, necesitamos para el envío de información mediante Internet de un cifrado de nuestros mensajes, operaciones bancarias, correo, etc., para que una tercera persona que no siempre tendrá las mejores intenciones no descubra nuestros datos privados.

  La idea que voy a exponer es cómo poder cifrar nuestro mensaje para evitar accesos desautorizados a través de una contraseña que nosotros inventemos o mucho mejor, que sea generada aleatoriamente, que nos permita como ya he dicho cifrar el mensaje pero también que nos permita, bien a nosotros mismos, bien a la persona que reciba, descifrar dicho mensaje porque si no, la encriptación no tendría sentido.

  Hagamos un poco de memoria histórica de la Criptografía.

  La criptografía es tan antigua como la escritura: siempre que ha habido comunicación entre dos personas, ha habido un tercero que podría estar interesado en interceptar el mensaje. Así que, ligada a la ciencia de encriptar (Criptografía) va siempre la ciencia de desencriptar (Criptoanálisis).  

El primer cifrado que puede considerarse como tal se debe a Julio César. Su método consistía en sustituir cada letra de un mensaje por su tercera siguiente en el alfabeto. Parece ser que los griegos y egipcios utilizaban sistemas similares. Estos sistemas demasiado triviales evolucionaron a elegir una reordenación cualquiera del alfabeto (una permutación por tanto) de forma que a cada letra se le puede hacer corresponder otra ya sin tanta regularidad como en el método anterior.  

La idea que doy puede aplicarse para hacer una práctica en Bachillerato pero lo que se emplea en la realidad es un cifrado de clave pública y clave privada que está fuera del objetivo y conocimientos de esta etapa. Así, abordando ya el problema vamos allá.

  Lo primero que tenemos que plantearnos matemáticamente hablando es una función que encripte pero que luego pueda obtenerse el mensaje original a través del mensaje cifrado. Para ello nuestra función debe ser inyectiva para que exista la función inversa. Podríamos pensar en una primera aproximación en una función lineal, por ejemplo, que no nos daría ningún problema en cuanto a su inyectividad. Recordemos que la de Julio César era . Una más general podría darse como la función afín  pero con poco que reflexionemos nos damos cuenta de que si damos los valores

 

A

B

C

D

E

F

G

H

I

J

K

L

M

N

Ñ

O

P

Q

R

S

T

U

V

W

X

Y

Z

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

 

Y tomamos la función y=2x+3, por ejemplo tendremos que la codificación de la palabra HOLA  se convertiría a LSOE. En realidad la operación que hacemos es  para que siempre nos dé un número comprendido entre 1 y 27 o dicho de otro modo, de la A a la Z.

  Pero, ¿qué ocurre con frases como DABALE ARROZ A LA ZORRA EL ABAD? Son palíndromos y su encriptación sería de la siguiente forma

 

HEFEOI EVVD E OE DVVE IO EFEH

 

Guarda una simetría incluso encriptada y damos demasiadas pistas a la tercera persona que no nos interesa que nos desencripte el mensaje.

 

Bueno, si nos fijamos en el módulo o resto de la división entera hemos resuelto nuestro problema de la manera más simple. Una expresión de la forma a MOD b significa el resto de dividir a entre b. Los caracteres ASCII en castellano van del 0 al 255. Por ejemplo, las mayúsculas de la A a la Z van desde los números 65 a 90 con caracteres especiales de la Ñ claro, porque no existe en todos los idiomas. La tabla mencionada puede consultarse en cualquier libro de programación básica o incluso podemos hacer un programa en TurboPascal o C++ para que nos las genere.

  Si generamos una clave como hola (hay que tener en cuenta que en ASCII las minúsculas tienen asignado un número decimal distinto de las mayúsculas) y la vamos sumando a cada carácter de nuestro mensaje ya tenemos la forma de encriptación:

 

DABALE ARROZ A LA ZORRA EL ABAD

holaholaholaholaholaholaholaholaholahola

 

Ahora solo queda dar la fórmula de encriptación, que utilizando la función MOD sería:

CC=(CR+CL) MOD 256

 

Siendo

-CC el carácter codificado final.

 -CR el carácter real de nuestro texto inicial.

-CL es nuestro carácter de la clave.

 

La palabra codigo con la clave hola pasaría a ser

 

codigo          99  111 100 105 103 111

holaho 104 111 108 97  104 111

 

203 222 208 202 207 222

 

Sólo tendríamos que mirar en una tabla ASCII para saber a que caracteres corresponden los números que nos han salido.

 

Y, por último la función que nos desencriptaría el mensaje con la misma clave sería:

 

CR=(256-CL+CC) MOD 256

 

203 222 208 202 207 222

                                      104  111   108  97  104  111

 

que nos llevaría a nuestro mensaje inicial

 

99 111 100 105 103 111

 

o lo que es lo mismo la palabra codigo.

 

Bibliografía

  -García Núñez, Pablo J. Bachillerato. Tecnologías de la Información. Informática. Madrid. Anaya Multimedia. 2000.

-Ramanujachary, K. Number theory with computer applications. Prentice Hall.1998.

-Konheim, Alan.Criptography: A primer. John Wiley & Sons.1981.

-Bujalance, Emilio y otros. Elementos de matemática discreta. Madrid. Sanz y Torres. 1993.

 

 Hit Counter

Escribe tu opinión del artículo en el foro

Revista Digital Sociedad de la información