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.
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.
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