Criptografar com a cifra afim
Crie uma função que receba uma string de texto plano (alfabeto inglês) totalmente em letras minúsculas e uma função de criptografia, e converta o texto plano em texto cifrado usando a função de criptografia afim.
Função de criptografia
Na cifra afim, as letras de um alfabeto de tamanho m são primeiro mapeadas para os inteiros no intervalo de 0 … m − 1. Em seguida, é usada aritmética modular para transformar o inteiro correspondente a cada letra do texto plano em outro inteiro correspondente a uma letra do texto cifrado.
A função de criptografia para uma única letra é E(x)=(ax+b)mod m, onde o módulo m é o tamanho do alfabeto e a e b são as chaves da cifra. O valor de a deve ser escolhido de modo que a e m sejam coprime.
O alfabeto será composto pelas letras a a z e terá os valores correspondentes: a=0, b=1, c=2, d=3 ... z=25.
Exemplos
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) = 2Observações
- Para este problema, 1 =< a <= 11 , 1 =< b <= 9 , m = 26
- Crie sua própria função gcd.