Cifrado de cifrado afín utilizando Python

Cifrado De Cifrado Afin Utilizando Python



Tema de contenidos:

  1. Introducción
  2. Conocimiento previo
  3. Ecuación de cifrado afín
  4. Cifrado de cifrado afín utilizando Python
  5. Prueba de concepto
  6. Conclusión
  7. Preguntas frecuentes (FAQ)

El cifrado afín representa un tipo específico de cifrado de sustitución y se incluye en la categoría de cifrados monoalfabéticos. A diferencia del cifrado César más famoso, que desplaza cada letra en texto plano en un número fijo de tres posiciones, el cifrado afín emplea dos claves (a y b). La elección de las claves debería requerir una consideración especial.

Conocimiento previo

Para comprender profundamente el tema de hoy, es necesario comprender los siguientes conceptos:







  • El máximo común divisor (MCD) y el número coprimo
  • Aritmética modular

Esos conceptos se explican en detalle en el artículo anterior titulado “Enfoque matemático de cifrado afín”.



Ecuación de cifrado afín

Comencemos con la fórmula para el cifrado de cifrado Affine:



E(x) = (ax + b) mod m
Anterior) Denota un cifrado del índice alfabético x
a Un valor de índice de la primera clave 'especial'.
X Un valor de índice de la letra simple.
b Un valor de índice de la segunda clave (valor de desplazamiento adicional)
modo m Las operaciones de módulo de la cantidad total del alfabeto que es 26


Imagen alternativa y título : Ecuación de cifrado afín





Por ejemplo, queremos cifrar el texto plano “BIMANDO” con las claves 7 y 13. Usando el siguiente índice de tabla, primero convertimos el texto sin formato a su número correspondiente:


Imagen alternativa y título : Numeración de índice



El texto plano “BIMANDO” se convierte en un número de indexación a “1 8 12 0 13 3 14”.


Imagen alternativa y título : Convertir un texto sin formato en un valor de numeración de índice

Luego, aplicamos el cálculo de la ecuación y el resultado se muestra a continuación:


Imagen alternativa y título : Cifrado afín

Entonces, el texto sin formato 'BIMANDO' se cifra utilizando el cifrado Affine con las claves 7 y 13, lo que da como resultado 'URTNAIH'.

Cifrado de cifrado afín utilizando Python

Ahora, digamos que queremos enviar un mensaje confidencial que contiene varios párrafos. Realizar el cifrado de cifrado Affine con el proceso manual requiere mucho esfuerzo y tiempo, y existe una alta probabilidad de que se equivoquen los cálculos, ¿verdad? Por lo tanto, necesitamos un programa que automatice el proceso de cifrado Affine Cipher. El siguiente es el proceso paso a paso para crear un programa Python:

1. Importe las bibliotecas necesarias
Nuestro programa comienza importando los módulos necesarios, como argparse, string y os, para el análisis de argumentos de la línea de comandos, operaciones de cadenas y funciones relacionadas con el sistema operativo, respectivamente.

importar analizar argumentos
importar cadena
importar

2. Definición del mapeo alfabético
Luego, definimos el alfabeto como una cadena de letras minúsculas en inglés. Esto se utiliza para mapear los caracteres durante el proceso de cifrado posterior.

alfabeto = cadena . ascii_minúsculas

3. Función de cifrado de cifrado afín
Esta es la función principal de nuestro programa. Toma el texto de entrada y dos claves, 'a' y 'b', y aplica el cifrado de cifrado afín al texto, preservando la estructura del texto.

definición affine_cipher_encryption ( texto , a , b ) :
texto_cifrado = ''
    para carbonizarse en texto:
        si carbonizarse. más bajo ( ) en alfabeto:
            si carbonizarse. es superior ( ) :
texto_cifrado + = chr ( ( ( a * ( palabra ( carbonizarse. más bajo ( ) ) - 97 ) +b ) % 26 ) + 65 )
            demás :
texto_cifrado + = chr ( ( ( a * ( palabra ( carbonizarse ) - 97 ) +b ) % 26 ) + 97 )
        demás :

4. Comprobación principal condicional
En este código de bloque, verifique si se está ejecutando como el programa principal. Configura el analizador de argumentos con descripciones del script y sus argumentos. El argumento requerido es solo una ruta de entrada de un archivo de texto. Cuando no especificamos la ruta de salida, queremos que establezca un valor predeterminado para el nombre del archivo de entrada con '_encrypted' adjunto. Para el argumento 'claves', queremos que tenga el formato 'a,b'. Pero si lo configuramos, el valor predeterminado es 5 y 8.

si __nombre__ == '__principal__' :
    analizador = argparse. Analizador de argumentos ( descripción = 'Cifrado de cifrado afín desde un archivo de texto' )
    analizador . agregar_argumento ( 'fichero de entrada' , ayuda = 'Ruta al archivo de texto de entrada' )
    analizador . agregar_argumento ( '-k' , '--llaves' , tipo = cadena , por defecto = '5,8' , ayuda = 'Claves para Affine Cipher en el formato 'a,b'' )
argumentos = analizador . parse_args ( )

a , b = mapa ( En t , argumentos. llaves . dividir ( ',' ) )

    con abierto ( argumentos. fichero de entrada , 'r' ) como archivo :
texto = archivo . leer ( )

    # Extrae el nombre del archivo de la ruta del archivo de entrada
nombre_archivo_entrada , extensión = . camino . texto dividido ( argumentos. fichero de entrada )
archivo_salida_predeterminado = nombre_archivo_entrada + '_encriptado' + extensión

    # Cifre el texto usando el cifrado afín
texto_cifrado = affine_cipher_encryption ( texto , a , b )

    # Escribe el texto cifrado en un nuevo archivo.
    con abierto ( archivo_salida_predeterminado , 'En' ) como archivo :
        archivo . escribir ( texto_cifrado )

Finalmente, una vez realizada la función de cifrado, nuestro programa guardará la salida con la misma extensión de archivo que el archivo de entrada.

Ahora guárdelo en 'affine_cipher.py'. Ahora, ejecute el programa escribiendo el siguiente comando:

Python affine_cipher. py -h

Si no encuentra ningún error, el resultado se parecerá a la siguiente imagen:


Imagen alternativa y título : Programa Python de cifrado afín

Prueba de concepto

Tenemos un mensaje confidencial con el siguiente nombre “message.txt” y queremos transmitirlo a nuestros miembros:


Imagen alternativa y título : Texto sin formato

Entonces, usamos el programa que creamos antes de querer cifrar este mensaje usando el cifrado Affine con las claves 3 y 7. El comando es el siguiente:

Python affine_cipher. py mensaje. TXT -k 3 , 7


Imagen alternativa y título : Programa Python de cifrado afín

En la velocidad de un abrir y cerrar de ojos, el mensaje cifrado se crea con éxito y se guarda en 'message_encrypted.txt'. Veamos cómo se ve el mensaje:


Imagen alternativa y título : Texto cifrado afín

Como puede ver, el mensaje está codificado. Sólo nuestros miembros que conocen el método de cifrado y sus claves pueden descifrar el mensaje.

Inténtalo tú mismo

Descargue el código fuente de este programa en nuestra página de GitHub en https://github.com/bimando/Affine-Cipher .

Conclusión

En conclusión, el método de cifrado de cifrado Affine, una forma de cifrado de sustitución monoalfabético, ofrece seguridad mejorada mediante el uso de dos claves, lo que exige una consideración cuidadosa durante la selección de claves. Comprender conceptos como el máximo común divisor (MCD), los números coprimos y la aritmética modular son esenciales para comprender las complejidades del cifrado afín.

La ecuación de cifrado afín, E(x) = (a.x + b) mod m, sirve como herramienta fundamental para el cifrado donde 'a' y 'b' representan las claves y 'x' simboliza el índice de la letra de texto plano. Se demostró que la implementación de un programa Python automatizado para el proceso de cifrado de cifrado Affine agiliza las tareas de cifrado a gran escala de manera eficiente. El programa incorpora funcionalidades clave que incluyen la importación de bibliotecas, mapeo alfabético, una función de cifrado y análisis de argumentos de línea de comandos para rutas de entrada y salida. En particular, el script habilita la configuración predeterminada para las claves y los nombres de los archivos de salida para facilitar un proceso de cifrado perfecto.

Preguntas frecuentes (FAQ)

P1: ¿Qué es el cifrado afín y en qué se diferencia del cifrado César?

R1: El cifrado afín es un tipo de cifrado de sustitución monoalfabético que emplea dos claves, 'a' y 'b', para el cifrado. Por el contrario, el cifrado César utiliza un desplazamiento fijo de tres posiciones para cada letra del texto sin formato.

P2. ¿Cuáles son los requisitos previos para comprender el cifrado afín?

R2: Para comprender a fondo el cifrado afín, es fundamental comprender conceptos como el máximo común divisor (MCD), los números coprimos y la aritmética modular.

P3: ¿Cómo puedo cifrar un mensaje usando el cifrado Affine en Python?

R3: Para automatizar el proceso de cifrado de cifrado Affine, puede utilizar el programa Python que se describe en el artículo. El programa cifra eficientemente entradas de texto a gran escala, simplificando el procedimiento de cifrado. El artículo proporciona instrucciones paso a paso sobre cómo importar las bibliotecas, definir la asignación del alfabeto, crear la función de cifrado y analizar los argumentos de la línea de comandos para las rutas de entrada y salida.