Chiffre rail fence
Écrivez le message en zigzag sur plusieurs rails puis lisez-le ligne par ligne : avec 3 rails, WEAREDISCOVEREDFLEEATONCE devient WECRLTEERDSOEEFEAOCAIVDEN, et le même nombre de rails le remet en ordre. Pour les énigmes et les cours, pas pour les secrets. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- WEAREDISCOVEREDFLEEATONCE
- Nombre de rails
- 3
- Mode de calcul
- Encrypt
- Résultat
- WECRLTEERDSOEEFEAOCAIVDEN
- Longueur
- 25
Le chiffre rail fence est un chiffre classique de transposition qui réordonne les caractères en les écrivant en zigzag vers le bas puis vers le haut sur un nombre fixe de rails, puis en lisant chaque rail de gauche à droite. On l'utilise dans les livres de casse-tête, les échauffements CTF, les démos en classe sur la transposition face à la substitution, et une légère obfuscation de spoilers quand un chiffre moderne à clé est excessif. Cette capacité accepte un texte non vide, un entier de rails d'au moins deux et un mode optionnel chiffrer ou déchiffrer ; elle renvoie la chaîne transformée avec le mode normalisé, les rails utilisés et la longueur.
Règles de validation, limites de rails et pièges fréquents
Espaces, chiffres, ponctuation et caractères non latins ne sont pas retirés : chaque unité de code participe à la transposition, donc les messages gardent leurs symboles et seul l'ordre change. Ne traitez pas le résultat comme un chiffrement de confidentialité : quiconque connaît le nombre de rails peut inverser le schéma rapidement, et la page produit ne doit jamais vendre le rail fence comme contrôle de sécurité pour mots de passe, jetons ou données personnelles.
Préférez cette page lorsque l'intention de recherche est chiffre rail fence, chiffre zigzag ou chiffrer/déchiffrer rail-fence ; Atbash et ROT13 répondent aux intentions de substitution, et Base64 ou hex aux intentions d'encodage, donc ils restent des outils séparés. Lors du déchiffrement, utilisez le même nombre de rails que celui qui a produit le chiffré ; un mauvais nombre donne une autre permutation qui ne correspondra pas au texte d'origine.
Cas d’usage
Échauffements de transposition casse-tête et CTF
Cachez des indices ou des drapeaux de défi avec un nombre de rails connu, puis déchiffrez avec les mêmes rails quand les solveurs ont besoin de la révélation sans installer de bibliothèques crypto.
Démos de transposition en classe
Les enseignants opposent le réordonnancement en zigzag aux chiffres de substitution : chiffrez, déchiffrez et montrez que l'identité des lettres reste, seul l'ordre change.
Questions fréquentes
Comment chiffrer un texte avec le chiffre rail fence ?
Le champ result de la réponse contient le chiffré en zigzag.
Comment déchiffrer un texte rail-fence ?
Envoyez le chiffré comme text, la même valeur rails utilisée au chiffrement, et mode decrypt (ou decode). Le result est le texte en clair reconstruit lorsque le nombre de rails correspond.
Que se passe-t-il avec moins de deux rails ?
Le produit rail-fence exige au moins deux rails ; un seul rail laisserait le texte inchangé.
Le rail fence est-il un chiffrement sûr ?
Non. Le rail fence est une transposition classique pour casse-tête et enseignement, pas pour la confidentialité. Ne l'utilisez jamais pour des mots de passe ou des données sensibles.
Les espaces et la ponctuation sont-ils conservés ?
Oui. Aucun caractère n'est retiré ni remplacé : espaces, chiffres, ponctuation et lettres non latines suivent le zigzag comme les autres. Seul l'ordre change, et le texte chiffré a exactement la même longueur que le message d'origine.
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/rail-fence \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}'const res = await fetch("https://api.kit.forhosting.com/enc/rail-fence", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/rail-fence",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/rail-fence", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/rail-fence", 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": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.rail_fence",
"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
Avec deux rails ou plus, le message est brouillé sans changer l'identité des lettres : espaces et ponctuation se déplacent avec le zigzag au lieu d'être substitués. Moins de deux rails ou un texte vide échouent avec invalid_input.
Comment fonctionne le zigzag rail-fence et ce que contient la réponse
La lecture concatène tous les caractères du premier rail de gauche à droite, puis le deuxième, et ainsi de suite jusqu'au dernier ; cette concaténation est le texte chiffré. Le déchiffrement reconstruit le même motif d'occupation pour la longueur et le nombre de rails connus, remplit chaque rail avec la tranche suivante du chiffré, puis reprend le zigzag pour rétablir l'ordre d'origine. Le mode optionnel vaut encrypt par défaut ; encrypt et encode exécutent le zigzag vers l'avant, tandis que decrypt et decode l'inversent. Le chiffrement écrit chaque caractère successif sur des rails successifs pendant que le trajet descend du rail supérieur au rail inférieur puis remonte, en répétant jusqu'à placer tout le message. Envoyez du JSON avec le champ chaîne obligatoire text égal à un message non vide et l'entier obligatoire rails d'au moins deux ; les alias input, value, s et message servent pour le corps du texte, tandis que key, n et num_rails alias le nombre de rails lorsque d'anciens formulaires réutilisent ces noms. En cas de succès la réponse inclut result avec le texte transformé, mode normalisé en encrypt ou decrypt, rails reprenant l'entier utilisé, length égal au nombre de caractères d'entrée, et method égal à rail_fence pour que les clients puissent brancher sans deviner les formes. Des entrées identiques produisent toujours un JSON identique car le chemin est une pure arithmétique d'indices, sans réseau, sans graine aléatoire et sans horloge.
Règles de validation, limites de rails et pièges fréquents
Un text manquant, non chaîne ou chaîne vide lève invalid_input et n'est pas facturé sur l'API prépayée après rejet par le moteur. Rails manquant, non entier ou un nombre inférieur à deux échouent aussi avec invalid_input ; la promesse produit est un vrai zigzag multi-rails, et un seul rail laisserait le message inchangé. Plus de deux cent cinquante-six rails sont rejetés pour borner la construction du motif dans un appel d'élément d'isolate Worker.
Usage API, tarification, flux en classe et limites pratiques
Appelez le chiffre rail fence gratuit dans le navigateur pour des brouillons de casse-tête, des diapositives de cours, de la pratique CTF et des contrôles ponctuels sans écrire une routine zigzag dans chaque langage. Les playbooks de support peuvent inverser des notes de tickets légèrement brouillées que le personnel a volontairement écrites avec un nombre de rails connu. Les sites de casse-tête peuvent précalculer des réponses à afficher et les révéler à la demande avec mode decrypt. Associez-le à des outils de substitution seulement quand une étape pédagogique ultérieure demande une autre famille de chiffres — gardez le rail fence sur sa propre page pour que l'intention SEO reste nette autour de la transposition en zigzag. 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. Un flux typique en classe écrit une phrase courte sur des rails papier, compare les réponses des élèves au résultat de l'API, puis déchiffre pour montrer que la transposition est inversible lorsque la clé est le nombre de rails. Les auteurs de SDK peuvent mapper le champ result directement vers un bouton copier, tandis que mode, rails et method rendent les exemples OpenAPI auto-explicatifs. Gardez les charges à des tailles de texte ordinaires adaptées à un appel d'élément d'isolate Worker ; cet outil est pour des messages et extraits, pas des blobs binaires multi-mégaoctets.
Cas d'intégration
Fixtures de pipeline et d'intégration continue
Scripts et tests d'intégration continue épinglent des sorties déterministes rail-fence pour que des bugs accidentels de motif ou de limites de rails échouent vite.
Questions techniques
L'outil de chiffre rail fence 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.