posté par Admin le 5/2/2018
Le chiffre affine est une méthode de cryptographie basée sur un chiffrement par substitution mono-alphabétique.
Chaque lettre de l'alphabet (de A jusqu'à Z) est codée par son rang par un chiffre successivement de 0 à 25. ex: a=x (constante)=>lettre remplacée par une autre lettre unique. Le chiffre affine est un code facile à comprendre, mais cela signifie qu'il est tout aussi facile à casser. Son créateur reste toujours inconnu.
Exemple:
Pour chiffrer le mot “affine”
soit la clé a=5 et b=3
m=26 (il y a 26 lettres)
| text | a | f | f | i | n | e |
|---|---|---|---|---|---|---|
| valeur numerique | 0 | 5 | 5 | 8 | 13 | 4 |
| ax+b | 3 | 28 | 28 | 43 | 68 | 23 |
| (ax+b) mod 26 | 3 | 2 | 2 | 17 | 16 | 23 |
| message chiffre | d | c | c | r | q | x |
Pour déchiffrer, nous devons faire l'inverse:
D(x)=c(x-b) mod m
avec c est pour a * c = 1 mod m
c = 21
| message chiffre | d | c | c | r | q | x |
|---|---|---|---|---|---|---|
| valeur numerique | 3 | 2 | 2 | 17 | 16 | 23 |
| 21(x-b) | 0 | -21 | -21 | 294 | 273 | 420 |
| 21(x-b)mod m | 0 | 5 | 5 | 8 | 13 | 4 |
| message | a | f | f | i | n | e |
Voici un simple code python, qui chiffre toutes les lettres de l'alphabet (cf. Code ci-dessous).
def chiffrer(a, b):
for i in range(26):
print(chr(i+65) + ": " + chr(((a*i+b)%26)+65))
chiffrer(9, 12)
Sortie de la console après avoir exécuté le code ci-dessus.