Descifrar el cifrado afín

Crea una función que recibe una cadena de texto cifrado (alfabeto inglés) completamente en minúsculas, una función de cifrado y la convierte en texto plano usando la función de descifrado afín.

Función de descifrado

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 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 de a debe elegirse de modo que a y m sean coprime.

La función de descifrado es D(x)=a^(-1)*(x-b)mod m, donde a^(-1) es el inverso multiplicativo modular de a módulo m ie a * a^(-1) mod m == 1. El inverso multiplicativo de a solo existe si a and m are coprime. Por lo tanto, sin la restricción sobre a, el descifrado podría no ser posible.

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_decrypt("ucncmrwt", "(x+2)%26") ➞ "salakpur"
# a = 1, b = 2, encryption = "(x+2)%26".
# Modular Multiplicative Inverse of 1 =  1.
# We apply the decryption function for the letters.

affine_decrypt("hezmrc", "(3x+4)%26") ➞ "bahuni"
# a = 3, b = 4, encryption = "(x+2)%26".
# Modular Multiplicative Inverse of 3 = 9.
# We apply the decryption function for the letters.

Notas

Para el problema 1 =< a <= 11 , 1 =< b <= 9 , m = 26