Está en la página 1de 5

Programa de encriptacin simtrica con el mtodo matricial hecho en Java

4 de agosto de 2010 | Autor: admin

Este es un programa que hicimos en la universidad. Est hecho en un applet de Java en Netbeans. Primero les explico cmo funciona este mtodo de encriptacin y desencriptacin y luego el funcionamiento del programa. El mtodo de encriptacin simtrica se llama as porque usa la misma clave para encriptar y desencriptar. La clave es un valor numrico. Para entender cmo funciona vamos a usar un ejemplo. El mensaje a encriptar ser: HOLA MUNDO ES UNA FRASE COMUN y la clave va a ser 4. Lo que hacemos es agrupar el texto en nmero de caracteres segn la clave y formar una matriz. As con esa frase y esa clave nos quedara: H _ D S A A C N _ O M O _ _ S O L U _ U F E M A N E N R _ U

Para el ejemplo reemplac los espacios con guiones bajos. Viendo esa frase en una lnea sera: HOLA | _MUN |DO_E | S_UN |A_FR | ASE_ | COMU | N_ _ _ | Al ltimo puse 3 guiones bajos para completar los 4 caracteres finales. Para encriptar la frase viendo la matriz vamos cogiendo los caracteres de la primera columna, luego de la segunda, etc, la frase nos queda: H_DSAACN OMO__SO_ LU_UFEM_ ANENR_U_ -> Cuarta columna -> -> -> Primera Segunda Tercera columna columna columna

La frase encriptada completa nos queda: H_DSAACNOMO__SO_LU_UFEM_ANENR_U_ Tomando en cuenta que los guiones bajos son en realidad espacios. Ahora analizando el nmero de caracteres tenemos que la frase original tiene 29 caracteres incluyendo los espacios, mientras que la frase encriptada tiene 31 caracteres (no se toma en cuenta el ltimo espacio). Este dato necesitamos para el proceso de desencriptacin. Para eso se parte de la frase encriptada y se divide el nmero de caracteres para la clave. Si el residuo es cero, la respuesta de la divisin es el

nmero de filas de la matriz, si no es cero el nmero de filas de la matriz es la respuesta d ela divisin ms uno. Si dividimos 31 para 4 la respuesta es 7 con residuo 3, como no es exacta entonces el nmero de filas ser 7 + 1 = 8. Quiere decir que debemos agrupar la frase encriptada en grupo de 8 caracteres as: H_DSAACNOMO__SO_LU_UFEM_ANENR_U -> Frase encriptada

H_DSAACN | OMO__SO_ | LU_UFEM_ | ANENR_U Para formar la matriz cada grupo de caracteres es una columna de la matriz, nos queda por tanto: H _ D S A A C N O M O _ _ S O L U _ U F E M A N E N R _ U

Nuevamente volvemos a la matriz original y ya es cuestin de leer las filas en orden y se obtiene el mensaje desencriptado. Esto es lo que haremos en el programa hecho en Java.

7.3.4.- Cifrado Matricial o cifrado Hill

En 1929, Lester S. Hill, un joven matemtico, publica un artculo en el que propone el uso del lgebra y, en particular de las matrices, en la operacin de cifrado. La importancia del mtodo de cifrado propuesto por Hill est en el uso de transformaciones lineales matriciales operando en mdulo 26 (las letras del alfabeto ingls). Sin embargo, en el momento de su publicacin, el mtodo de Hill aunque result muy interesante para los cientficos, no era fcil de implantar (no se haba inventado el ordenador) y por eso no pudo competir con otros mtodos como fue la mquina Enigma de los alemanes.

Actualmente este sistema presenta una cierta seguridad, se puede implementar fcilmente en los ordenadores a nuestro alcance y hace uso de conceptos de aritmtica modular y matrices, por lo que vamos a explicarlo con detalle.

El mtodo consiste en dividir el texto original en bloques de longitud igual a n y considerar cada uno de esos bloques como un vector y a cada vector aplicarle la transformacin:

v M.v + w

donde M es una matriz de orden n x n, con elementos en Z30 y tal que el mcd(det(M), 30) = 1 y w es un vector fijo de n componentes en Z30.

Las matrices que se suelen usar son matrices autoinversas, es decir matrices que coincidan con su inversa, de esta forma eliminamos a la hora de descifrar el mensaje el clculo de una matriz inversa, pero esto no es obligatorio.

1. A = Zm (como ya hemos indicado vamos a considerar m = 30).

2. K est formado por la matriz M y el vector W, ambos con elementos en Z30.

3. E formado solamente por la aplicacin

(x) = Mnxnxnx1 + wnx1

4. D formado solamente por la aplicacin (y) = Mnxn1(xnx1 wnx1), teniendo en cuenta que trabajamos en Z30 y que en caso de considerar matrices autoinversas, M-1 = M

Ejemplo 7:

Utilizando la matriz M =

yw=

cifrar el mensaje: vacaciones

1 paso: Descomponemos el mensaje en bloques de dos, por ser la matriz de orden 2x2. En caso de tener el ltimo bloque con menos de n elementos, aadimos espacios en blanco

va

ca

ci

on

es

2 paso: Pasamos a elementos de Z30

22 0

20

28

15 13 4 19

3 paso: Aplicamos la transformacin a cada uno de los 5 bloques que tenemos, teniendo en cuenta que se trabaja en Z30

4 paso: Volvemos a sustituir los nmeros por letras y agrupamos, obteniendo el mensaje:

evvvakffl

Ejemplo 8:

Sabiendo que se ha usado la matriz M = .esbrdvx. (los puntos son del mensaje)

yW=

, descifrar el mensaje:

1 paso: Separemos en bloques de tres y pasamos a nmeros:

28 4 19

1 18 3

22 24 28

2 paso. la inversa de la matriz M es M-1 = hacemos (en Z30):

, por lo tanto para descifrar el mensaje

per

Haciendo lo mismo con el segundo bloque y con el tercero, obtenemos el mensaje: