Outil pour décoder/encoder avec le chiffre de Hill, un système de chiffrement similaire au chiffre affine mais utilisant une matrice plutôt qu'un coefficient directeur.
Chiffre de Hill - dCode
Catégorie(s) : Chiffre Poly-Alphabétique
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 de Hill est un chiffrement polyalphabétique créé par extension du chiffrement Affine, utilisant l'algèbre linéaire et l'arithmétique modulaire via une matrice numérique qui sert de clé de chiffrement et déchiffrement.
Le chiffre de Hill utilise un alphabet et une matrice carrée $ M $ de taille $ n $ composée de nombres entiers et appelée matrice de chiffrement.
Exemple : Chiffrer le texte DCODE avec l'alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ et la matrice $ M $ d'ordre $ n=2 $ : $$ M = \begin{bmatrix} 2 & 3 \\ 5 & 7 \end{bmatrix} $$
Découper le texte en $ n $-grammes. Compléter tout ngramme incomplet final avec des lettres aléatoires si besoin.
Exemple : La matrice $ M $ est une matrice 2x2, DCODE devient DC,OD,EZ (un Z a été rajouté pour compléter le dernier bigramme)
Substituer les lettres du message clair par leur rang dans l'alphabet à partir de $ 0 $.
Exemple : L'alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ devient A=0,B=1,…,Z=25.
Les groupes de lettres DC, OD, EZ deviennent les groupes de valeurs (3,2), (14,3), (4,25)
Il est envisageable (mais déconseillé) d'utiliser ZABCDEFGHIJKLMNOPQRSTUVWXY pour avoir A=1,B=2,…,Y=25,Z=0.
Pour chaque groupe de valeurs $ P $ du texte clair (mathématiquement équivalent à un vecteur de taille $ n $) effectuer le calcul matriciel : $$ M.P \equiv C \mod 26 $$ où $ C $ est le groupe de valeurs chiffrées calculé et $ 26 $ la longueur de l'alphabet.
Exemple : $$ \begin{bmatrix} 2 & 3 \\ 5 & 7 \end{bmatrix} \cdot \begin{bmatrix} 3 \\ 2 \end{bmatrix} \equiv \begin{bmatrix} 12 \\ 3 \end{bmatrix} \mod 26 $$
A partir des valeurs chiffrées $ C $, retrouver les lettres chiffrées de même rang dans l'alphabet.
Exemple : $ 12 $ équivaut à M et $ 3 $ équivaut à D etc.
Ainsi de suite, DCODEZ se chiffre MDLNFN
Le déchiffrement nécessite de connaitre la matrice et l'alphabet utilisé. Les calculs font intervenir des notions de calcul matriciel comme l'inversion de matrice et du calcul arithmétique comme l'inversion modulaire.
Pour déchiffrer, d'abord calculer l'inverse de la matrice modulo 26 (où 26 la longueur de l'alphabet), ce qui nécessite que la matrice soit inversible.
Exemple : En reprenant la matrice de l'exemple pour le chiffrement, calculer l'inverse de la matrice (modulo 26) : $$ \begin{bmatrix} 2 & 3 \\ 5 & 7 \end{bmatrix}^{-1} \equiv \begin{bmatrix} -7 & 3 \\ 5 & -2 \end{bmatrix} \equiv \begin{bmatrix} 19 & 3 \\ 5 & 24 \end{bmatrix} \mod 26 $$
Le déchiffrement consiste alors à re-chiffrer le message chiffré à l'aide de la matrice inversée.
A noter que toutes les matrices ne peuvent pas être adaptées à Hill. Le déterminant de la matrice doit être premier avec 26.
Le déterminant de la matrice de Hill doit être premier avec 26 pour assurer que la matrice soit inversible modulo 26 (la valeur 26 provient de la longueur de l'alphabet latin ayant 26 lettres).
Cela garantit que chaque opération de multiplication modulaire reste bijective (chaque vecteur/ngramme d'entrée correspond à un seul vecteur/ngramme chiffré et inversement).
Si ce n'était pas le cas, plusieurs vecteurs/ngrammes différents pourraient être chiffrés de la même façon, ce qui rendrait le déchiffrement ambigu et difficile à réaliser de manière fiable.
Exemple : Pour une matrice de taille 2x2 les 4 nombres $ \{ a,b,c,d \} $ doivent satisfaire cette condition : $ ad-bc $ est premier avec 26.
Le message a un indice de coincidence faible, des ngrammes similaires peuvent être codés de la même manière.
Toute référence à une colline ou une montagne est un indice (Hill signifie colline en anglais).
Parfois les groupes de lettres sont laissés visibles (tous de longueur n = 2, 3 ou 4) ce qui laisse à imaginer que la matrice est de taille n.
dCode propose de tester par bruteforce environ 6000 combinaisons de matrices 2x2 (avec des chiffres entre 1 et 9) et d'alphabet.
Pour les matrices contenant des nombres $ >= 10 $ ou des matrices de taille supérieures, les temps de calculs deviennent exponentiellement plus long.
Hill est déjà une variante du chiffre Affine. Peu de variantes connues à part l'utilisation de matrices de taille supérieure à 2.
Le chiffrement de Hill a été créé en 1929 par Lester S. Hill
dCode se réserve la propriété du code source pour "Chiffre de Hill". Tout algorithme pour "Chiffre de Hill", applet ou snippet ou script (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toutes fonctions liées à "Chiffre de Hill" (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 de Hill" ou tout autre élément ne sont pas publics (sauf licence open source explicite type Creative Commons). 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 de Hill" 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.
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 de Hill sur dCode.fr [site web en ligne], consulté le 16/04/2025,