Programa de encriptación simétrica con el método matricial hecho en Java

download Programa de encriptación simétrica con el método matricial hecho en Java

of 5

Transcript of Programa de encriptación simétrica con el método matricial hecho en Java

Programa de encriptacin simtrica con el mtodo matricial hecho en Java4 de agosto de 2010 | Autor:admin

Este es un programa que hicimos en la universidad. Est hecho en un applet de Java enNetbeans. 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 COMUNy 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 O L A_ M U ND O _ ES _ U NA _ F RA S E _C O M UN _ _ _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 -> Primera columnaOMO__SO_ -> Segunda columnaLU_UFEM_ -> Tercera columnaANENR_U_ -> Cuarta columnaLa 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 encriptadaH_DSAACN | OMO__SO_ | LU_UFEM_ | ANENR_UPara formar la matriz cada grupo de caracteres es una columna de la matriz, nos queda por tanto:H O L A_ M U ND O _ ES _ U NA _ F RA S E _C O M UN _ _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 HillEn 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:vM.v + wdonde M es una matriz de orden n x n, con elementos en Z30y 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.Kest formado por la matriz M y el vector W, ambos con elementos en Z30.3.Eformado solamente por la aplicacin(x) = Mnxnxnx1+ wnx14.Dformado solamente por la aplicacin(y) = Mnxn1(xnx1 wnx1), teniendo en cuenta que trabajamos en Z30y que en caso de considerar matrices autoinversas, M-1= MEjemplo7:Utilizando la matriz M =y w =cifrar el mensaje:vacaciones1 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 blancovacaciones2 paso: Pasamos a elementos de Z3022 02 02 815 134 193 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:e v v v a k f f lEjemplo 8:Sabiendo que se ha usado la matriz M =y W =, descifrar el mensaje:.esbrdvx.(los puntos son del mensaje)1 paso: Separemos en bloques de tres y pasamos a nmeros:28 4 191 18 322 24 282 paso. la inversa de la matriz M es M-1=, por lo tanto para descifrar el mensaje hacemos (en Z30):.=.=perHaciendo lo mismo con el segundo bloque y con el tercero, obtenemos el mensaje: