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:
- Abra el archivo
affine.pyen su editor de texto. - 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
textesNoneo una cadena vacía. Si es así, devuelveNone. - Luego, la función establece los valores de
a,bymsegú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íny = (a * x + b) % my agrega el carácter cifrado a la cadenaencryption_text. - Si el carácter no es una letra inglesa de media anchura, se agrega a la cadena
encryption_textsin ninguna modificación. - Finalmente, la función devuelve la cadena
encryption_text.
- 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.
- 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}")
- Guarde el archivo
affine.py. - Abra una terminal o un símbolo del sistema, navegue hasta el directorio que contiene el archivo
affine.pyy 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().
- 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 variableencryption_text. - Si
encryption_textesNone(lo que significa que el texto de entrada estaba vacío), imprime un mensaje de error. - De lo contrario, imprime el texto cifrado.
- Guarde el archivo
affine.py. - Abra una terminal o un símbolo del sistema, navegue hasta el directorio que contiene el archivo
affine.pyy ejecute el siguiente comando:
python3 affine.py
- 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.



