Algoritmo AFIN

Se le llama algoritmo afín a todo aquel algoritmo mono alfabético genérico que realiza transformaciones afines, esto es, la operación de sustitución se realiza con base en la siguiente expresión:

Ci = (a*Mi + b) mod n

donde:

Ci = carácter cifrado que ocupa la posición i en el alfabeto
Mi = carácter en claro que ocupa la posición i en el alfabeto
a = constante de decimación
b = constante de desplazamiento
n = orden del grupo

Como se puede apreciar, la constante de decimación debe ser a<=1 ya que de otra forma (a=0) se anularía la equivalencia de los alfabetos, la constante de desplazamiento debe cumplir 1<=b<=n, ya que si fuese b = 0 no habría desplazamiento alguno y entonces el resultado sería Cripto = Mcla, en tanto que si b fuese b>n caería dentro del mismo anillo, por lo que su valor se vería reducido a módulo n. Con base en estas características los sistemas de cifrado por sustitución se pueden clasificar como sigue:

-  Sustitución por desplazamiento puro: cuando a=1 y 1<=b<=n.

-  Sustitución por decimación pura: cuando a>1 y b=0.

-  Sustitución afín: cuando a>1 y 1<=b<=n.

De manera que haciendo la comparación con la expresión con la dada para el algoritmo del César

Cifrado: Ci = Mi + 3 mod n

Se observa que a = 1, b = 3, por lo que corresponde al grupo de algoritmos de sustitución por desplazamiento puro.

 si   Ci = (a * Mi + b) mod n = 0          

entonces            

Ci = [(a * Mi + b) mod n] + n

 

Para llevar a cabo el proceso de descifrado es necesario calcular:

Mi = (Ci – b) * mod n

Siendo  = inv(a, n), donde el factor de multiplicación  a debe ser primo relativo con el cuerpo  n  para que exista el inverso de a.