Chiffre de Hill 2×2
Avec la matrice clé 3, 3, 2 et 5, HELP devient HIAT : chaque paire de lettres est multipliée par la matrice modulo 26. Vous voyez aussi le déterminant, ici 9, et la matrice inverse nécessaire au déchiffrement. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- HELP
- A
- 3
- B
- 3
- C
- 2
- D
- 5
- Mode de calcul
- Encrypt
- Résultat
- HIAT
- Det
- 9
- Déterminant inverse
- 3
- Inverse
- 15, 17, 20, 9
Le chiffre de Hill est une substitution polygraphique classique inventée par Lester S. Hill qui chiffre des blocs de lettres par algèbre linéaire modulaire plutôt que par un simple décalage ou un alphabet à mot-clé. Dans la forme deux par deux, chaque paire de lettres devient un vecteur colonne multiplié par une matrice clé à quatre entrées modulo vingt-six, de sorte que le chiffré de chaque digramme dépend des deux lettres du clair à la fois. Le déchiffrement multiplie par l'inverse modulaire de cette matrice, qui n'existe que lorsque le déterminant est premier avec vingt-six. Étudiants, joueurs de CTF et auteurs d'énigmes utilisent le cas 2×2 car l'arithmétique reste maniable tout en démontrant des matrices invertibles sur Z/26Z. Cette capacité accepte un texte non vide, quatre entiers de clé a, b, c et d, et un mode optionnel chiffrer ou déchiffrer ; elle renvoie le flux de lettres transformé plus le déterminant, la matrice inverse et des métadonnées de digrammes.
Comment fonctionne la carte Hill 2×2 et ce que contient la réponse
Le chiffrement traite chaque lettre latine comme un nombre de zéro à vingt-cinq et traite le flux deux lettres à la fois. Pour un digramme de valeurs x1 et x2 et une matrice clé K aux lignes a b en haut et c d en bas, la paire chiffrée est y1 égal à a fois x1 plus b fois x2 modulo vingt-six et y2 égal à c fois x1 plus d fois x2 modulo vingt-six. Les lettres sont réécrites en majuscules A à Z.
Chiffres, espaces, ponctuation, emoji et écritures non latines sont retirés avant l'appariement afin que la matrice voie toujours un flux alphabétique pur ; si le nombre de lettres filtrées est impair au chiffrement, un rembourrage X est ajouté pour que chaque bloc soit un digramme. Le déchiffrement récupère le clair en calculant l'inverse matriciel modulaire de K et en multipliant de la même façon, ce qui exige que le déterminant ad moins bc réduit modulo vingt-six soit premier avec vingt-six.
Le mode optionnel accepte encrypt et encode pour la carte directe et decrypt et decode pour l'inverse.
Règles de validation, matrices invertibles et pièges fréquents
Un texte sans lettres latines après filtrage échoue aussi, car il n'y a aucun digramme à former. La règle produit décisive est l'invertibilité de la matrice clé modulo vingt-six : le déterminant det égal à a fois d moins b fois c réduit entre zéro et vingt-cinq doit satisfaire gcd de det et vingt-six égal à un.
Lorsque ce gcd est supérieur à un, la carte n'est pas bijective sur les digrammes et le déchiffrement ne peut être unique, aussi la capacité signale une matrice clé non invertible avec le déterminant et le gcd calculés dans le message d'erreur. Les déterminants valides sont les unités de Z/26Z—un, trois, cinq, sept, neuf, onze, quinze, dix-sept, dix-neuf, vingt et un, vingt-trois et vingt-cinq—si bien que des structures singulières ou seulement paires comme une identité doublée échouent souvent.
Au déchiffrement, un nombre impair de lettres après filtrage est rejeté car le chiffré doit arriver en digrammes complets ; le chiffrement peut rembourrer avec X mais le déchiffrement n'invente pas une lettre manquante. Ne traitez pas la sortie comme un chiffrement de confidentialité : l'espace de clé de quatre petits résidus est minuscule, les attaques à clair connu récupèrent vite des systèmes linéaires, et la page produit ne doit jamais vendre Hill comme contrôle de sécurité pour mots de passe, jetons ou données personnelles.
Préférez cette landing lorsque l'intention de recherche est chiffre de Hill, Hill 2x2 ou chiffre matriciel mod 26 ; affine répond aux cartes linéaires monoalphabétiques, Playfair aux rectangles de digrammes et Base64 à l'encodage, ce sont donc des outils séparés. En déchiffrant, utilisez les mêmes a, b, c et d qui ont produit le chiffré ; une mauvaise matrice invertible donne une autre substitution de digrammes qui ne correspondra pas au clair d'origine.
Usages en classe et limites pratiques
Appelez le chiffre de Hill gratuit dans le navigateur pour les devoirs, diapositives, pratique CTF et chiffrements ou déchiffrements ponctuels sans réimplémenter l'inverse matriciel modulaire dans chaque langage. Un flux de classe typique commence par la matrice identité pour montrer que les digrammes passent inchangés quand K est l'identité, puis passe à la clé de manuel trois-trois-deux-cinq et guide les élèves pour multiplier HELP en HIAT à la main avant de comparer avec l'outil.
Les enseignants peuvent soumettre à dessein une matrice non invertible telle que deux zéro zéro deux pour démontrer que le gcd du déterminant avec vingt-six bloque le déchiffrement, leçon centrale d'algèbre linéaire sur les anneaux modulaires. Les playbooks de support peuvent inverser des notes légèrement obscurcies rédigées avec des clés de classe connues. Les sites d'énigmes peuvent précalculer des réponses et les révéler à la demande avec mode decrypt.
Associez-le à l'analyse de fréquences ou à d'autres outils classiques seulement lorsqu'une étape pédagogique ultérieure exige une autre famille de chiffre—gardez le Hill 2×2 sur sa propre landing pour que l'intention SEO reste nette autour de la substitution de digrammes matricielle modulo vingt-six.
Cas d’usage
Devoirs de cryptanalyse et échauffements CTF
Les étudiants chiffrent de courtes phrases avec une clé 2×2 connue, déchiffrent le chiffré digramme des camarades ou vérifient des multiplications matricielles modulaires faites à la main sans installer de CAS.
Questions fréquentes
Comment chiffrer un texte avec le chiffre de Hill 2×2 ?
Le champ result de la réponse contient les digrammes du chiffré en majuscules.
Comment déchiffrer un chiffré Hill ?
Envoyez le chiffré comme text, les mêmes a,b,c,d utilisés au chiffrement et mode decrypt (ou decode). Le result est le flux de lettres majuscules reconstruit lorsque la clé correspond ; les nombres impairs de lettres après filtrage sont rejetés.
Que se passe-t-il si la matrice clé n'est pas invertible mod 26 ?
Le déchiffrement exige gcd(det(K),26)=1 ; sinon la carte de digrammes n'est pas bijective.
Le chiffre de Hill est-il un chiffrement sûr ?
Non. Hill est un chiffre polygraphique classique pour énigmes et enseignement, pas pour la confidentialité. Ne l'utilisez jamais pour des mots de passe ou des données sensibles.
Pourquoi un X apparaît-il à la fin de mon texte chiffré ?
Le chiffre de Hill 2×2 traite les lettres deux par deux. Si votre message compte un nombre impair de lettres, un X est ajouté à la fin pour compléter la dernière paire avant le chiffrement.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/enc/hill-2x2 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"HELP","a":3,"b":3,"c":2,"d":5}'const res = await fetch("https://api.kit.forhosting.com/enc/hill-2x2", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "HELP",
"a": 3,
"b": 3,
"c": 2,
"d": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/hill-2x2",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "HELP",
"a": 3,
"b": 3,
"c": 2,
"d": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/hill-2x2", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"HELP","a":3,"b":3,"c":2,"d":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"HELP","a":3,"b":3,"c":2,"d":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/hill-2x2", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "HELP",
"a": 3,
"b": 3,
"c": 2,
"d": 5
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.hill_2x2",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Lorsque la matrice clé n'est pas invertible modulo vingt-six, la requête échoue avec invalid_input et un message clair de matrice clé non invertible.
Comment fonctionne la carte Hill 2×2 et ce que contient la réponse
Envoyez un JSON avec le champ string obligatoire text égal à un message non vide qui conserve au moins une lettre après filtrage, des entiers obligatoires a, b, c et d chacun de zéro à vingt-cinq, et un mode optionnel valant encrypt par défaut ; les alias input, value, s, message, plaintext et ciphertext servent pour le corps, tandis que k11, m11 et key_a alias a, et les alias de style k12 couvrent b, c et d. En cas de succès la réponse inclut result avec les lettres majuscules transformées, mode normalisé en encrypt ou decrypt, les quatre entrées de clé, det et det_inv pour le chemin du déterminant, inverse comme liste plate de quatre nombres de K inverse, key_matrix comme tableau imbriqué deux par deux, letters_in montrant le flux filtré et éventuellement rembourré qui est entré dans la matrice, digraph_count, booléen padded, length du texte d'origine et method égal à hill_2x2 pour que les clients branchent sans deviner les formes. Des entrées identiques produisent toujours le même JSON car le chemin est de l'arithmétique modulaire pure sans réseau, graine aléatoire ni horloge murale.
Règles de validation, matrices invertibles et pièges fréquents
Un text manquant, non string ou une chaîne vide lèvent invalid_input et ne sont pas facturés sur l'API prépayée après rejet du moteur. Des a, b, c ou d manquants, des clés non entières ou des valeurs hors de zéro à vingt-cinq échouent aussi avec invalid_input.
Usage API, tarification, classe et limites pratiques
Utilisez l'API prépayée KIT lorsqu'un backend, une fonction serverless, une plateforme de tutorat ou un SDK a besoin d'un contrat stable sous solde à $0.002 par élément réussi ; les échecs de validation ne consomment jamais le solde après rejet. Les auteurs de SDK peuvent mapper le champ result vers un bouton copier tandis que key_matrix, det, inverse et method rendent les exemples OpenAPI auto-explicatifs. Gardez des charges utiles de taille de texte ordinaire adaptées à un appel item dans un isolate Worker ; cet outil vise messages et extraits, pas des blobs binaires multi-mégaoctets.
Cas d'intégration
Démos d'algèbre linéaire modulaire en classe
Les enseignants montrent que seules les matrices de det premier avec 26 sont invertibles, contrastent les digrammes Hill avec les cartes affines monoalphabétiques et ancrent a=3,b=3,c=2,d=5 comme fixture de manuel.
Fixtures de pipeline et d'intégration continue
Scripts et tests d'intégration continue ancrent des sorties Hill déterministes et l'erreur de matrice clé non invertible pour que des bugs accidentels de déterminant ou d'inverse échouent vite.
Questions techniques
L'outil chiffre de Hill 2×2 est-il gratuit ?
L'outil navigateur s'exécute gratuitement sur votre appareil. Les appels API utilisent le solde prépayé KIT à $0.002 par élément réussi ; les échecs de validation ne sont pas facturés.