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

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

Observações

  • Para este problema, 1 =< a <= 11 , 1 =< b <= 9 , m = 26
  • Crie sua própria função gcd.