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.
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.
affineEncrypt("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.
affineEncrypt("dang", "(2x+7)%26") ➞ "2 and 26 are not coprime"
// a = 2, b = 7
// gcd(2, 26) = 2