Cifrar con el cifrado afín
Crea una función que reciba una cadena de texto plano (alfabeto inglés) completamente en minúsculas y una función de cifrado, y convierta el texto plano en texto cifrado usando la función de cifrado afín.
Función de cifrado
En el cifrado afín, las letras de un alfabeto de tamaño m se asignan primero a los enteros del rango 0 … m − 1. Luego, se utiliza aritmética modular para transformar el entero al que corresponde cada letra del texto plano en otro entero que corresponde a una letra del texto cifrado.
La función de cifrado para una sola letra es E(x)=(ax+b)mod m, donde el módulo m es el tamaño del alfabeto y a y b son las claves del cifrado. El valor a debe elegirse de modo que a y m sean coprime.
El alfabeto estará compuesto por las letras a a z y tendrá los valores correspondientes: a=0, b=1, c=2, d=3 ... z=25.
Ejemplos
affine_encrypt("salakpur", "(x+2)%26") ➞ "ucncmrwt"
# a = 1 , b = 2
# Encryption function = "(x+2)%26"
# gcd(1, 26) = 1
# Therefore, we apply the encryption function for the letters.
affine_encrypt("dang", "(2x+7)%26") ➞ "2 and 26 are not coprime"
# a = 2, b = 7
# gcd(2, 26) = 2Notas
- Para este problema, 1 =< a <= 11 , 1 =< b <= 9 , m = 26
- Crea tu propia función gcd.