Les codages affines Codage affine
Le codage affine généralise la méthode de Jules César. Il transforme chaque lettre de l’alphabet en une autre lettre de l’alphabet à l’aide d’une fonction affine.
1. Une convention
Pour simplifier les choses, convenons de ne prendre que des lettres capitales non accentuées et choisissons deux nombres entiers a et b dans l’intervalle [0 ; 25]. Soit x le rang d’une lettre quelconque de l’alphabet et soit y celui de sa transformée. Par définition, le nombre y est le reste de la division euclidienne du nombre ax+b par 26.
2. Un programme pour coder un texte
Le programme suivant permet le codage affine d’un texte écrit en lettres capitales non accentuées et dépourvu d’espaces.
# Codage affine d'un texte
print("Quelle phrase voulez-vous coder ?")
x=input()
n=len(x)
a=eval(input("Choisissez un entier a :"))
b=eval(input("Choisissez un entier b :"))
nouveautexte=""
for i in range(0,n):
y=ord(x[i])
y=65+((a*y+b)-65)%26
nouveautexte=nouveautexte+chr(y)
print("Voici le texte codé :", nouveautexte)
Codons par exemple le texte VENI VIDI VICI de Jules César en prenant a=9 et b=5. Le texte codé est le suivant :
Quelle phrase voulez-vous coder ?
VENIVIDIVICI
Choisissez un entier a : 9 ...