Chiffre grille tournante
ATTACKATDAWN sur une grille de 4 sur 4 devient ATTCXAKAXXDTXAWN : les lettres passent par les trous du masque, qui tourne quatre fois d'un quart de tour, puis le carré rempli se lit ligne par ligne. Seul l'ordre change. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- ATTACKATDAWN
- Taille
- 4
- Mode de calcul
- Encrypt
- Texte
- ATTCXAKAXXDTXAWN
- Nombre de trous
- 4
- Longueur
- 16
- Nombre de caractères de remplissage
- 4
Le chiffre à grille tournante, aussi appelé grille de Fleissner, est un système classique de transposition qui dissimule l’ordre plutôt que la valeur des lettres. Vous posez un masque carré en carton percé d’ouvertures sur une grille vide, écrivez les lettres suivantes du clair à travers les trous, tournez le masque de quatre-vingt-dix degrés et répétez jusqu’à remplir la grille ; la lecture du carré rempli ligne par ligne donne le chiffré. Cette capacité met en œuvre ce processus de façon déterministe : fournissez le texte, une taille de grille paire, le motif de base des trous et le mode chiffrer ou déchiffrer. Le moteur vérifie que quatre tours dans le sens horaire couvrent chaque case exactement une fois et signale une grille invalide lorsque les trous se chevauchent, laissent des vides, sortent du plateau ou ont un mauvais nombre. Espaces et ponctuation voyagent avec les lettres ; un clair trop court est complété par un seul caractère de rembourrage pour remplir des carrés entiers.
Comment fonctionne la grille tournante
Une grille tournante n’est pas un chiffre de substitution : chaque caractère garde son identité et seule sa position change. Fixez une longueur de côté n paire pour que le plateau ait n au carré cases. Un masque valide pour quatre quarts de tour a exactement un quart de ces cases ouvertes — n au carré divisé par quatre trous — choisies de sorte qu’une rotation des ouvertures de quatre-vingt-dix degrés dans le sens horaire, quatre fois, visite chaque case une fois et jamais deux.
Cette condition combinatoire est le cœur du système : chaque orbite de rotation sous le groupe cyclique du carré apporte exactement un trou dans le masque de base. Le chiffrement parcourt les quatre orientations dans l’ordre. À chaque orientation, les trous visibles sont triés en ordre ligne majeure, les caractères suivants du clair y sont écrits, puis le masque tourne.
Lorsque les quatre tours sont terminés, la grille est complète et le chiffré est la concaténation des lignes de haut en bas, de gauche à droite. Le déchiffrement remplit cette même grille à partir du chiffré en ordre ligne majeure, puis relit les lettres à travers la même séquence de trous tournés, restaurant l’ordre d’origine y compris le rembourrage ajouté pour remplir le dernier bloc.
Comme la carte est une pure permutation d’indices pour une taille et un jeu de trous fixes, la routine est déterministe entre exécutions, sans aléa, horloge ni requête réseau, et sûre pour des tests de référence. Un côté impair laisse une case centrale fixe sous rotation et est rejeté comme grille invalide pour ce modèle à quatre tours.
Orbites qui se chevauchent, trous de base en double, coordonnées hors plage ou mauvais nombre de trous échouent aussi la validation avant tout déplacement de caractère, afin que l’appelant sache toujours si le masque est une clé légale.
Comment lire le message chiffré
Text est la chaîne en clair ou chiffrée ; rien n’est supprimé ni normalisé en casse, donc majuscules et minuscules mélangées, espaces et ponctuation participent à la transposition comme tout autre caractère. Size est un entier pair de deux à seize inclus — le côté du carré. Holes est un tableau d’objets avec des indices entiers row et col à partir de zéro ; la longueur de ce tableau doit être égale à size au carré divisé par quatre.
Faites l’aller-retour en chiffrant avec un size et un motif de trous donnés, puis en déchiffrant avec la même paire ; un masque différent produit une autre permutation et ne restaurera pas l’original. Le texte vide est rejeté. Préférez ce point de terminaison lorsque l’intention de recherche vise précisément une grille tournante, une grille de Fleissner ou un chiffre à masque de carton rotatif, plutôt qu’une transposition colonnaire ou en rail-fence.
Cours, CTF, produit et coût
Les cours d’histoire et de cryptographie utilisent la grille tournante pour introduire des clés géométriques et des arguments d’orbites avant les chiffres modernes : les élèves conçoivent un motif légal à quatre trous sur un plateau quatre sur quatre, chiffrent un court slogan, passent le chiffré et la description du masque à un partenaire et ne retrouvent le slogan que lorsque les deux partagent les mêmes ouvertures.
Les auteurs de capture-the-flag cachent des drapeaux sous une grille publiée ou partielle et vérifient les soumissions des résolveurs contre cette même routine déterministe. Les rédacteurs de documentation intègrent des paires chiffrer/déchiffrer dans des tutoriels sans maintenir à la main des tables de permutation pour chaque rotation. Cette parité aligne solutions de devoirs, références d’intégration continue et démonstrations de production.
Ne traitez pas la grille tournante comme une confidentialité pour de vrais secrets — c’est un outil d’enseignement et de puzzle — mais traitez le motif de trous et la taille comme les paramètres secrets du système jouet.
Cas d’usage
Auteurs de CTF et d’énigmes
Cachez de courtes chaînes de défi sous une grille tournante publiée ou partielle et vérifiez les soumissions des résolveurs contre la même paire chiffrer/déchiffrer déterministe.
Documentation et terrains de jeu classiques
Générez des exemples stables de chiffré pour des tutoriels Fleissner et grille tournante sans maintenir à la main des tables de rotation pour chaque taille de plateau.
Questions fréquentes
Qu’est-ce qu’un chiffre à grille tournante ?
Un chiffre classique de transposition qui écrit des lettres à travers des trous d’un masque carré, tourne le masque de 90° trois fois encore pour remplir la grille, puis lit le carré ligne par ligne. Les valeurs des lettres restent ; seul l’ordre change.
Pourquoi size doit-il être pair ?
Cette mise en œuvre utilise quatre tours de 90° sans case centrale fixe.
Qu’est-ce qui rend une grille invalide ?
Un mauvais nombre de trous (pas size²/4), des ouvertures en double ou hors plage, ou toute case couverte plus d’une fois ou laissée découverte après quatre rotations.
Quel est le coût ?
La page interactive s’exécute gratuitement dans votre navigateur.
Les majuscules et les espaces sont-ils conservés ?
Oui. Rien n'est supprimé ni converti : majuscules, minuscules, espaces et ponctuation changent seulement de place, comme les lettres. Une grille tournante modifie l'ordre des caractères, jamais leur valeur.
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/grille-cipher \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"ATTACKATDAWN","size":4,"holes":[{"row":0,"col":0},{"row":0,"col":1},{"row":0,"col":2},{"row":1,"col":1}],"mode":"encrypt"}'const res = await fetch("https://api.kit.forhosting.com/enc/grille-cipher", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "ATTACKATDAWN",
"size": 4,
"holes": [
{
"row": 0,
"col": 0
},
{
"row": 0,
"col": 1
},
{
"row": 0,
"col": 2
},
{
"row": 1,
"col": 1
}
],
"mode": "encrypt"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/grille-cipher",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "ATTACKATDAWN",
"size": 4,
"holes": [
{
"row": 0,
"col": 0
},
{
"row": 0,
"col": 1
},
{
"row": 0,
"col": 2
},
{
"row": 1,
"col": 1
}
],
"mode": "encrypt"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/grille-cipher", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"ATTACKATDAWN","size":4,"holes":[{"row":0,"col":0},{"row":0,"col":1},{"row":0,"col":2},{"row":1,"col":1}],"mode":"encrypt"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"ATTACKATDAWN","size":4,"holes":[{"row":0,"col":0},{"row":0,"col":1},{"row":0,"col":2},{"row":1,"col":1}],"mode":"encrypt"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/grille-cipher", 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": "ATTACKATDAWN",
"size": 4,
"holes": [
{
"row": 0,
"col": 0
},
{
"row": 0,
"col": 1
},
{
"row": 0,
"col": 2
},
{
"row": 1,
"col": 1
}
],
"mode": "encrypt"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.grille_cipher",
"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
Utilisez l’outil gratuitement sur cette page, ou appelez le même algorithme pur par API à $0.002 par requête pour des démonstrations en classe, des aides CTF et des exemples de documentation reproductibles.
Appeler l’API et lire le résultat
Envoyez text, size, holes et mode. Mode vaut encrypt ou decrypt ; le gestionnaire accepte des alias courts comme enc et dec. Le pad_char optionnel est un seul caractère utilisé uniquement au chiffrement lorsque la longueur du message n’est pas un multiple de size au carré ; la valeur par défaut est X majuscule. Champs obligatoires manquants, text non chaîne, size non pair, trous hors plage, masque chevauchant ou incomplet, mode inconnu, ou longueur de déchiffrement qui n’est pas un multiple du nombre de cases échouent tous avec invalid_input et un message qui nomme le problème — la formulation invalid grille apparaît dès que la faute vient du masque lui-même. En cas de succès, le JSON inclut text (la chaîne transformée), mode (encrypt ou decrypt canonique), size, holes (normalisés et triés), holes_count, length du résultat, pad_count (combien de caractères de rembourrage ont été ajoutés au chiffrement, zéro au déchiffrement) et blocks (combien de carrés complets ont été traités).
Cours, CTF, produit et coût
Les équipes produit qui proposent des terrains de jeu de chiffres classiques peuvent appeler l’API pour des contrôles côté serveur tandis que les visiteurs expérimentent gratuitement dans le navigateur. Comme le travail est un simple indexage en temps d’analyse sans service externe, la latence reste faible et le modèle de coût est simple : essayez des conversions illimitées gratuitement sur cette page, puis automatisez des entrées identiques à $0.002 par élément réussi avec le solde prépayé KIT lorsque vous intégrez depuis des scripts ou des services backend. Mappez les commandes d’interface sur size, un éditeur de lignes pour holes et chiffrer versus déchiffrer ; validez côté client le size pair et le nombre de trous lorsque c’est possible, et affichez les messages invalid_input près de l’éditeur de grille lorsque les utilisateurs envoient des ouvertures chevauchantes ou un côté impair.
Cas d'intégration
Travaux pratiques de cryptographie
Les élèves conçoivent un masque de trous valide sur une grille paire, chiffrent une phrase en quatre rotations, puis la retrouvent avec le même size et les mêmes holes — la géométrie est la clé.
Questions techniques
Le déchiffrement exige-t-il les mêmes holes et size ?
Oui. Chiffrer et déchiffrer utilisent le même size pair et le même motif de base des trous. Un masque différent applique une autre permutation et ne restaurera pas le texte d’origine.