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". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Chiffre de Hill", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les 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 les données, en téléchargement, script, ou les accès API à "Chiffre de Hill" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Chiffre de Hill" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Chiffre de Hill sur dCode.fr [site web en ligne], consulté le 30/12/2024,