Autores: Leo Martínez III - LinkedIn
Contacto: [email protected]
Creado: primavera de 2024
Este programa Python implementa Affine Cipher, un tipo de cifrado de sustitución, para cifrar y descifrar mensajes. Affine Cipher utiliza un par de claves, alfa (a) y beta (b), para transformar texto sin formato en texto cifrado y viceversa.
La fórmula de cifrado viene dada por: E(x) = (ax + b) mod m, donde x es el índice de letras del texto sin formato, a y b son claves y m es el tamaño del alfabeto.
El programa no distingue entre mayúsculas y minúsculas e ignora los espacios en la entrada.
El texto cifrado se genera convirtiendo cada letra del texto sin formato mediante la transformación afín.
La fórmula de descifrado viene dada por: D(y) = (a_inv * (y - b)) mod m, donde y es el índice de la letra del texto cifrado, a_inv es el inverso multiplicativo modular de a, b es la clave y m es la Tamaño del alfabeto.
De manera similar al cifrado, el programa no distingue entre mayúsculas y minúsculas e ignora los espacios en la entrada.
El programa solicita al usuario que elija entre cifrado ('e') o descifrado ('d').
Los usuarios ingresan valores alfa (a) y beta (b), asegurándose de que se encuentren dentro del rango válido.
Se realizan comprobaciones del MCD (máximo común divisor) para garantizar una entrada válida.
Se proporcionan valores de ejemplo para texto cifrado y texto sin formato con fines de prueba.
El programa fue creado en Google Colab con Python 3.9
Todo lo necesario junto con información de instalación adicional para ejecutar el programa estará contenido en esta carpeta.
Aquí hay una breve explicación de los artículos:
src: carpeta que contiene el código fuente del script python: main.py (use este archivo para ejecutar el programa)
README.md: contiene la información más básica sobre el proyecto
LICENCIA: Contiene información de licencia con respecto al repositorio de Github.
Además, asegúrese de que Python "matemático" esté instalado correctamente en su entorno virtual, ya que el método .gcd() es necesario para garantizar la verificación de errores y ayudar con la integridad del descifrado.