/Cifrado-de-Hill

Aplicación web con Java y Spring Web para cifrar y descifrar mensajes utilizando el cifrado de Hill, un método que emplea álgebra lineal.

Primary LanguageJava

Cifrado de Hill

Aplicación web con Java y Spring Web para cifrar y descifrar mensajes utilizando el cifrado de Hill, un método que emplea conceptos del álgebra lineal.

La motivación principal de este proyecto fue profundizar en conceptos del álgebra lineal como multiplicación de matrices, cálculo de la inversa modular de una matriz, cálculo del determinante con el método de Laplace, cálculo de matrices de cofactores, matriz transpuesta y matriz adjunta. Este proyecto emplea una arquitectura MVC para desacoplar la interfaz del funcionamiendo ya que en un futuro me guastaría mejorar el frontend de mi aplicación.

Funcionamiento

La interfaz principal se compone de 3 elementos:

  • Un campo donde irá el texto a procesar.
  • Un campo donde irá la clave con la que de cifrará y descifrará.
  • Un campo que muestra el texto ya cifrado o descifrado.

interfaz


Una vez se ingresa el texto y la clave, se muestra el texto cifrado. La clave debe ser una matriz con inversa modular, pero si el usuario no sabe qué es eso, el programa tiene la opción de generar aleatoriamente una clave segura.

encriptar


El cifrado reconoce 94 caracters ASCII que van desde el 32 hasta el 126, pero el código es muy general, lo que permite expandir esa cantidad en el futuro. El objetivo del cifrado es que si no se tiene la clave con la que se cifró, al intentar descifrar no tendrá sentido el texto.

clave erronea


Pero si se toma el texto cifrado y se descifra usando la clave con la que se cifró, se mostrará el texto original.

desencriptar

License

MIT