Implementando el Cifrado Afín en Python

PythonBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderás a implementar el algoritmo de cifrado afín en Python. El Cifrado Afín es un tipo de cifrado de sustitución que combina las características del cifrado de desplazamiento y el cifrado multiplicativo. Utiliza una función criptográfica para cifrar una letra a la vez, proporcionando una forma simple pero efectiva de cifrar y descifrar texto.

👀 Vista previa

Ejemplo 1: welcome - > oclsaqc
Ejemplo 2: welcome - > oclsaqc
Ejemplo 3: Qrwe - > Qroc
Ejemplo 4: None - > None

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo implementar la función de cifrado afín en Python
  • Cómo probar la función de cifrado afín con entradas de muestra
  • Cómo cifrar la entrada del usuario utilizando la función de cifrado afín

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender los principios básicos del Cifrado Afín
  • Implementar el algoritmo de cifrado afín en Python
  • Cifrar y descifrar texto utilizando la función de cifrado afín
  • Probar la función de cifrado afín con varias entradas

Implementar la función de cifrado afín

En este paso, aprenderás a implementar la función de cifrado afín en Python. Siga los pasos siguientes para completar este paso:

  1. Abra el archivo affine.py en su editor de texto.
  2. Dentro de la función affine_encryption(text), agregue el siguiente código:
def affine_encryption(text: str) -> str:
    if text is None or text == "":
        return None

    a = 5
    b = 8
    m = 26
    encryption_text = ""

    for char in text:
        if "A" <= char <= "Z" or "a" <= char <= "z":
            char = char.lower()
            x = ord(char) - ord("a")
            y = (a * x + b) % m
            encryption_text += chr(y + ord("a"))
        else:
            encryption_text += char

    return encryption_text

Explicación:

  • La función primero verifica si la entrada text es None o una cadena vacía. Si es así, devuelve None.
  • Luego, la función establece los valores de a, b y m según lo requerido por la fórmula de cifrado afín.
  • Itera a través de cada carácter en la entrada text.
  • Si el carácter es una letra inglesa de media anchura (entre 'A' y 'Z', o 'a' y 'z'), lo convierte a minúsculas, calcula el valor numérico correspondiente x, aplica la fórmula de cifrado afín y = (a * x + b) % m y agrega el carácter cifrado a la cadena encryption_text.
  • Si el carácter no es una letra inglesa de media anchura, se agrega a la cadena encryption_text sin ninguna modificación.
  • Finalmente, la función devuelve la cadena encryption_text.
  1. Guarde el archivo affine.py.

Probar la función de cifrado afín

En este paso, probarás la función affine_encryption() con las entradas de muestra proporcionadas.

  1. En el archivo affine.py, agregue el siguiente código al final del archivo:
if __name__ == "__main__":
    ## Muestra 1
    text = "welcome"
    encryption_text = affine_encryption(text)
    print(f"Muestra 1: {text} -> {encryption_text}")

    ## Muestra 2
    text = " welcome"
    encryption_text = affine_encryption(text)
    print(f"Muestra 2: {text} -> {encryption_text}")

    ## Muestra 3
    text = " Qrwe"
    encryption_text = affine_encryption(text)
    print(f"Muestra 3: {text} -> {encryption_text}")

    ## Muestra 4
    text = None
    encryption_text = affine_encryption(text)
    print(f"Muestra 4: {text} -> {encryption_text}")
  1. Guarde el archivo affine.py.
  2. Abra una terminal o un símbolo del sistema, navegue hasta el directorio que contiene el archivo affine.py y ejecute el siguiente comando:
python3 affine.py

Esto ejecutará la función affine_encryption() con las entradas de muestra proporcionadas e imprimirá los resultados.

Verifique que la salida coincida con los resultados esperados:

Muestra 1: welcome -> oclsaqc
Muestra 2:  welcome ->  oclsaqc
Muestra 3:  Qrwe -> Qroc
Muestra 4: None -> None

Si la salida coincide con los resultados esperados, su función affine_encryption() está funcionando correctamente.

Cifrar la entrada del usuario

En este paso, modificará el archivo affine.py para permitir que el usuario ingrese un texto y lo cifre utilizando la función affine_encryption().

  1. En el archivo affine.py, reemplace el código existente al final del archivo (es decir, if __name__ == "__main__": y la parte que sigue) con el siguiente código:
if __name__ == "__main__":
    text = input("Enter the text to encrypt: ")
    encryption_text = affine_encryption(text)
    if encryption_text is None:
        print("Error: Input text is empty.")
    else:
        print(f"Encrypted text: {encryption_text}")

Explicación:

  • El código le pide al usuario que ingrese el texto a cifrar.
  • Luego llama a la función affine_encryption() con la entrada del usuario y almacena el resultado en la variable encryption_text.
  • Si encryption_text es None (lo que significa que el texto de entrada estaba vacío), imprime un mensaje de error.
  • De lo contrario, imprime el texto cifrado.
  1. Guarde el archivo affine.py.
  2. Abra una terminal o un símbolo del sistema, navegue hasta el directorio que contiene el archivo affine.py y ejecute el siguiente comando:
python3 affine.py
  1. Cuando se le solicite, ingrese un texto a cifrar y observe la salida.

¡Felicitaciones! Ha completado la implementación de la función de cifrado afín y la ha probado con varias entradas.

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar