Outil pour décoder/encoder avec le chiffre Affine, une fonction de chiffrement par addition et multiplication qui code une lettre par une autre lettre de rang (ax + b) modulo 26.
Chiffre Affine - dCode
Catégorie(s) : Chiffrement par Substitution
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
Le chiffrement affine est une méthode de substitution monoalphabétique où chaque lettre du texte clair est remplacée par une autre lettre selon une fonction affine de la forme $ f(x) = A \times x + B \mod 26 $.
$ A $ et $ B $ sont deux entiers qui forment la clé de chiffrement, et $ 26 $ correspond à la longueur de l'alphabet latin standard.
Pour encoder un message avec le chiffrement affine :
1/ Associer à chaque lettre du texte clair sa position numérique $ x $ dans l'alphabet. Par défaut, $ A=0, B=1, \dots, Z=25 $, il est possible (mais déconseillé) d'utiliser $ A=1, \dots, Y=25, Z=0 $ en prenant l'alphabet ZABCDEFGHIJKLMNOPQRSTUVWXY
2/ Appliquer la fonction affine $ y = (A \times x + B) \mod 26 $ pour obtenir la position $ y $ de la lettre chiffrée.
3/ Remplacer chaque lettre du texte clair par la lettre correspondant à $ y $ dans l'alphabet.
Exemple : Chiffrer DCODE avec les coefficients $ A=5, B=3 $ et l'alphabet latin/français ABCDEFGHIJKLMNOPQRSTUVWXYZ.
| Lettre claire | $ x $ | $ y $ | Lettre chiffrée |
| D | $ 3 $ | $ 5 \times 3 + 3 = 18 $ | S |
| C | $ 2 $ | $ 5 \times 2 + 3 = 13 $ | N |
| O | $ 14 $ | $ 5 \times 14 + 3 = 73 \equiv 21 \mod 26 $ | V |
| D | $ 3 $ | $ 18 $ | S |
| E | $ 4 $ | $ 5 \times 4 + 3 = 23 $ | X |
Pour décoder un message chiffré par Affine :
1/ Calculer l'inverse modulaire $ A' $ de $ A $ modulo $ 26 $
2/ Pour chaque lettre chiffrée de position $ y $, calculer $ x = A' \times (y - B) \mod 26 $
3/ Remplacer chaque lettre chiffrée par la lettre correspondant à $ x $ dans l'alphabet.
Exemple : Message à déchiffrer SNVSX avec et les coefficients $ (A,B) = (5,3) $.
Un coefficient $ A' $ pour $ A = 5 $ est $ 21 $ (car $ 5 \times 21 = 105 \equiv 1 \mod 26 $).
Pour la lettre S ( $ y = 18 $ ), calculer la valeur $ x = A' \times (18-B) = 21 \times (18-3) = 315 \equiv 3 \mod 26 $ et la lettre au rang 3 est D. Le message clair est DCODE.
Un message chiffré par Affine a un indice de coincidence proche de celui de la langue du texte clair.
Toute référence à une fonction affine (en ligne droite), un graphique, une abscisse ou une ordonnée est un indice (la fonction $ f(x) = ax + b $ peut être représentée dans un repère orthonormé comme une fonction affine classique, il est donc possible à partir d'un graphe de retrouver le coefficient directeur $ a $ et l'ordonnée à l'origine $ b $).
Les chiffres affines regroupent en fait plusieurs chiffrements qui sont des cas particuliers :
— Le chiffre multiplicatif (multiplicative cipher) est un cas particulier du chiffre Affine où B vaut 0.
— Le chiffre de César est un cas particulier du chiffre Affine où A vaut 1 et B est le décalage.
Le chiffre affine est lui-même un cas particulier du chiffrement de Hill, qui utilise une matrice inversible, plutot qu'une équation de droite, pour générer l'alphabet de substitution.
Sans connaitre les coefficients $ A $ et $ B $, utiliser une attaque par brute-force. En supposant que l'alphabet fait 26 caractères, alors le coefficient $ A $ ne peut prendre que 12 valeurs (les nombres premiers avec 26) et le coefficient $ B $ ne peut prendre que 16 valeurs, soit un total de 312 combinaisons.
En connaissant des lettres du texte clair, il est possible de tracer les lettres claires/chiffrées dans un repère orthonormé et d'en déduire $ A $ (la pente) et $ B $ (l'ordonnée à l'origine).
Pour un chiffrement affine de fonction $ y = A x + B $, alors la fonction réciproque de déchiffrement s'exprime $ y' = A' x + B $
Calculer l'inverse modulaire de A, modulo la longueur de l'alphabet (voir ci-après pour les valeurs pré-calculées).
B' a la même valeur que B, pour cette raison, cette variable ne devrait pas s'appeler B' mais B.
La valeur de A' dépend de A mais aussi de la longueur de l'alphabet, si celui-ci est classique, il a 26 caractères. Les valeurs de A' dans ce cas sont les suivantes :
| A = 1 | A' = 1 |
| A = 3 | A' = 9 |
| A = 5 | A' = 21 |
| A = 7 | A' = 15 |
| A = 9 | A' = 3 |
| A = 11 | A' = 19 |
| A = 15 | A' = 7 |
| A = 17 | A' = 23 |
| A = 19 | A' = 11 |
| A = 21 | A' = 5 |
| A = 23 | A' = 17 |
| A = 25 | A' = 25 |
Le théorème de Bezout's indique que $ A' $ n'existe que si $ A $ et $ 26 $ (la longueur de l'alphabet) sont premiers entre eux. Ceci limite $ A $ aux valeurs $ 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 $.
Oui, mais cela rend le déchiffrement non unique : une même lettre chiffrée peut correspondre à plusieurs lettres claires.
Oui, mais toute valeur négative de $ A $ a un équivalent positif modulo 26.
Exemple : Un chiffrement avec une valeur de $ A = -1 $ est identique à un chiffrement avec une valeur de $ A = 25 $ (car $ 25 \equiv -1 \mod 26 $)
Non, $ B $ peut être n'importe quel entier mais toutes les valeurs de $ B $ modulo 26 (longueur de l'alphabet) sont équivalentes. Ainsi si $ B $ est négative, il existe une valeur de $ B $ positive équivalente.
Exemple : Un chiffrement avec $ B = -1 $ est équivalent à un chiffrement avec $ B = 25 $
En mathématiques, une fonction affine est définie par une addition et une multiplication de la variable (souvent $ x $) et s'écrit $ f(x) = ax + b $. Le chiffrement affine est similaire à la fonction $ f $ car elle utilise les valeurs $ a $ et $ b $ comme coefficient et la variable $ x $ est la lettre à chiffrer.
La fonction affine est une fonction linéaire car son graphique est une ligne droite.
Aucune date ni auteur ne sont connus pour le chiffre affine.
dCode se réserve la propriété du code source pour "Chiffre Affine". Tout algorithme pour "Chiffre Affine", applet ou snippet ou script (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toutes fonctions liées à "Chiffre Affine" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou toute base de données, ou accès API à "Chiffre Affine" ou tout autre élément ne sont pas publics (sauf licence open source explicite). Idem avec le téléchargement pour un usage hors ligne sur PC, mobile, tablette, appli iPhone ou Android.
Rappel : dCode est une ressource éducative et pédagogique, accessible en ligne gratuitement et pour tous.
Le contenu de la page "Chiffre Affine" ainsi que ses résultats peuvent être copiés et réutilisés librement, y compris à des fins commerciales, à condition de mentionner dCode.fr comme source (Licence de libre diffusion Creative Commons CC-BY).
L'export des résultats est gratuit et se fait simplement en cliquant sur les icônes d'export ⤓ (format .csv ou .txt) ou ⧉ copier-coller.
Pour citer dCode.fr sur un autre site Internet, utiliser le lien :
Dans un article scientifique ou un livre, la citation bibliographique recommandée est : Chiffre Affine sur dCode.fr [site web en ligne], consulté le 03/01/2026,