You are on page 1of 7

UNIVERSIDAD DE GUADALAJARA

CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E


INGENIERAS

REPORTE DE ENCRIPTADOR DE HILL

ALUMNO: JULIO ALEJANDRO VLIZ RAMREZ


CARRERA: INGENIERA
ELECTRNICA

EN

COMUNICACIONES

CDIGO: 215859849

MATERIA: SEMINARIO DE SOLUCIN DE PROBLEMAS DE


MTODOS MATEMTICOS I

NRC: 42692 CLAVE: I5894 SECCION: D17

HORARIO: LUNES Y MIERCOLES DE 1:00 A 3:00 PM.

PROFESOR: CAROLINA ELIZABETH GMEZ MRQUEZ

FUNCIONAMIENTO DEL PROGRAMA


El Encriptador de Hill realizado puede encriptar palabras en diagramas o
trigramas, esto utilizando matrices de 2x2 o 3x3, respectivamente.
Lo primero que se deber hacer al ejecutar el programa ser seleccionar con que
matriz clave se desea trabajar, si con una matriz de 2x2 o una matriz 3x3.

Una vez seleccionada esta opcin el programa pedir al usuario que se introduzca
la matriz (segn la elegida) con los nmeros de dicha matriz separados por una
coma y en modulo 26. (Ejemplo: 4, 9, 13,18).

Ahora se calcular la determinante de la matriz, as como su mximo comn


divisor con el numero 26. El programa puede marcar como opcin no valida la
matriz si esta: tiene una determinante igual a cero, o si no es coprimo de 26. Por lo
que se pedir al usuario que vuelva a introducir otras cantidades, para rehacer el
clculo. Esto se hace para que la matriz tenga una matriz inversa y as pueda
existir el mtodo de desencriptar el mensaje.

Ahora, el programa pedir el mensaje a cifrar. En caso de que sea una oracin, las
palabras se deben escribir juntas, y pueden ser en maysculas o minsculas, pues
el cdigo no es sensible a esto.

Posteriormente, el programa detectar si la cantidad de letras a cifrar es un


mltiplo de 2 o 3, segn sea el caso, y si no es as, agregar la cantidad de X
necesarias para que sea un mltiplo.
Por ltimo, el programa realizar la multiplicacin del diagramas o trigramas, por
las matrices, para luego obtener el modulo 26 de dichas cantidades, y as obtener
el mensaje cifrado.

CDIGO DESCRITO A DETALLE


Se iniciar aadiendo todas las bibliotecas necesarias para realizar el programa,
as como las variables a utilizar.
Posteriormente se iniciar la primer condicin, la cual ser elegir la matriz clave
con la que se trabajar, si 2x2 o 3x3. Si el usuario seleccion una opcin distinta,
marcar como opcin invalida, y se ciclar hasta que el usuario elija una de las
dos opciones posibles. Este valor se guardar para utilizarlo a lo largo del
programa.

La siguiente parte consta de introducir los nmeros de la matriz y convertirlos a


nmeros enteros (dado que al inicio son tomados dentro de un string) para
posteriormente guardarlos en un arreglo de variables int. Ah mismo el programa
calcular la determinante de la matriz ( de 2x2 o de 3x3 segn el elegido).

Ahora, con la determinante se aplicar el proceso del algoritmo extendido de


Euclides, para as saber cul es el Mximo Comn Divisor entre el nmero
resultante de la determinante y 26. Ah mismo se realizar la condicin de que si
la determinante es distinta de 0 y el MCD igual a 1, se rompa el bucle, si no,
aparecer un mensaje en el cual explique el error al usuario, y lo obligar a volver
a introducir otra matriz, hasta que esta matriz cumpla con los requisitos
necesarios.

Posteriormente el programa pedir al usuario que introduzca la palabra a cifrar. De


esta manera, y habiendo seleccionado antes que matriz se iba a utilizar, el

programa realizar la validacin de la cantidad de letras a cifrar. Si se eligi


trabajar con matriz clave de 2x2, y el tamao del mensaje en claro no es mltiplo
de 2, se le agregar una X al final del mensaje, para as obtener paridad.
Si se eligi trabajar con matriz clave de 3x3, y el tamao del mensaje en claro no
es mltiplo de 3, se le 1 o 2 (segn las necesarias) para as obtener una cantidad
de letras que sean mltiplo de 3. Una vez realizando la validacin, de haber
cambios en el mensaje, el programa le notificar al usuario sobre estos cambios.

Ahora, para realizar la encriptacin, si se eligio la opcin de matriz 2x2: se tendrn


3 variables de control: La primera que ser el contador para saber cundo acabar
la encriptacin, y las otras 2, que sern las sumatorias de la multiplicacin de
matrices. El bucle while inicia convirtiendo la palabra guardada en el string en un
entero; dado que este entero arrojado es en realidad su valor en ascii de la letra
(Ejemplo, la letra A en ascii es el valor 65, por lo que si se detecta una A dentro del
mensaje en claro, el programa arrojar un entero de valor 65, y no de 0, como
debera ser realmente. Por lo que el cdigo automticamente restar 65 en caso
de ser maysculas, o 90 en caso de ser minsculas para as obtener su valor en
modulo 26).
Unas vez convertidos a modulo 26 las letras, se realizar la multiplicacin, para
esto se irn sumando por columnas los resultados en dos distintas variables, y
despus se volver a reciclar esas variables para la segunda columna.
Despus, con los resultados de la suma de multiplicaciones ya obtenidos, se
pondrn estos resultados en modulo 26, y posteriormente se le volver a sumar 65
para as convertirlo a ASCII en maysculas, y de esta manera asignarlo en una
variable char, para que al imprimir este valor, se imprima la letra correspondiente.

Las variables de la sumatoria se limpiarn para que vuelvan a ser utilizadas para
el siguiente par de letras a encriptar.

El proceso para cuando se eligi trabajar con una matriz de 3x3 es igual a que
cuando es con una de 2x2, solo que ahora habrn 4 variables de control: 1 de
conteo y 3 de suma. Adems que ahora habr 3 sumatorias de multiplicaciones
realizndose a la vez, y 3 columnas por las cuales realizar este proceso.

You might also like