Chiffre affine
Chiffrez ou déchiffrez avec le chiffre affine, qui multiplie la position de chaque lettre par a puis ajoute b : avec a à 5 et b à 8, AFFINE CIPHER devient IHHWVC SWFRCP. L'inverse de a, ici 21, s'affiche aussi. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- AFFINE CIPHER
- A
- 5
- B
- 8
- Mode de calcul
- Encrypt
- Résultat
- IHHWVC SWFRCP
- A inverse
- 21
- Longueur
- 13
- Lettres transformées
- 12
Le chiffre affine est une substitution monoalphabétique classique qui transforme la position x de chaque lettre par la formule linéaire E(x)=(a·x+b) mod 26, où a est un multiplicateur premier avec vingt-six et b un décalage additif. Le déchiffrement multiplie par l'inverse modulaire de a, de sorte que tout couple de clés valide est entièrement réversible. Contrairement à ROT13 ou Atbash, les deux clés sont des paramètres libres dans l'ensemble autorisé, ce qui fait de l'affine une étape pédagogique classique entre le chiffre de César à décalage fixe et les chiffres monoalphabétiques complets à mot-clé. On l'utilise pour les devoirs de cryptanalyse, les échauffements de CTF, les livres d'énigmes et les démonstrations d'arithmétique modulaire en classe. Cette capacité accepte un texte non vide, des clés entières a et b, et un mode optionnel de chiffrement ou de déchiffrement ; elle renvoie la chaîne transformée avec l'inverse de a et un comptage de lettres.
Règles de validation, clés premières avec 26 et pièges courants
La règle décisive du produit est que a doit être premier avec vingt-six : gcd(a,26) doit valoir un pour qu'un inverse modulaire existe. Les multiplicateurs valides sont un, trois, cinq, sept, neuf, onze, quinze, dix-sept, dix-neuf, vingt et un, vingt-trois et vingt-cinq ; les valeurs paires et les multiples de treize partagent un facteur avec vingt-six et sont rejetés avec un message clair indiquant que a n'est pas premier avec 26.
Ne considérez pas la sortie comme un chiffrement assurant la confidentialité : l'espace des clés est minuscule, l'analyse des fréquences fonctionne toujours et la page produit ne doit jamais présenter l'affine comme un contrôle de sécurité pour des mots de passe, des jetons ou des données personnelles.
Préférez cette page lorsque l'intention de recherche est chiffre affine, chiffrement et déchiffrement affine ou chiffre monoalphabétique modulaire ; Atbash et ROT13 répondent aux intentions de correspondance fixe, le chiffre des barreaux à la transposition et Base64 à l'encodage, ils restent donc des outils distincts. Lors du déchiffrement, utilisez les mêmes a et b que ceux qui ont produit le cryptogramme ; un mauvais couple donne une substitution différente qui ne correspondra pas au texte d'origine.
En classe : usages et limites
Utilisez le chiffre affine gratuit du navigateur pour vérifier des devoirs, préparer des diapositives, s'entraîner aux CTF et effectuer des chiffrements ou déchiffrements ponctuels sans écrire de code d'inverse modulaire dans chaque langage. Un scénario de classe typique montre que le chiffre de César est le cas particulier a égal à un, puis fait varier a dans l'ensemble des premiers avec 26 et démontre que les multiplicateurs pairs détruisent l'inversibilité. Les guides de support peuvent inverser des notes légèrement obscurcies rédigées par le personnel avec des clés de classe connues.
Les sites d'énigmes peuvent précalculer les réponses pour les afficher et les révéler à la demande avec mode decrypt. Combinez-le avec l'analyse des fréquences ou d'autres outils classiques uniquement lorsqu'une étape pédagogique ultérieure exige une autre famille de chiffres — gardez l'affine sur sa propre page afin que l'intention SEO reste centrée sur la substitution modulaire à clé.
Cas d’usage
Devoirs de cryptanalyse et échauffements de CTF
Les étudiants chiffrent de courtes phrases avec a et b connus, puis déchiffrent les cryptogrammes de leurs camarades ou retrouvent des clés sous contraintes sans installer de CAS.
Questions fréquentes
Comment chiffrer un texte avec le chiffre affine ?
Le champ result de la réponse contient le cryptogramme.
Comment déchiffrer un cryptogramme affine ?
Envoyez le cryptogramme comme text, les mêmes a et b utilisés pour le chiffrement, et mode decrypt (ou decode). Le résultat est le texte en clair reconstruit lorsque les clés correspondent.
Que se passe-t-il si a n'est pas premier avec 26 ?
La correspondance affine n'est bijective que lorsque gcd(a,26)=1 ; les multiplicateurs pairs et les multiples de 13 sont rejetés.
L'outil de chiffre affine est-il gratuit ?
L'outil du navigateur s'exécute gratuitement sur votre appareil.
Le chiffre affine est-il un chiffrement sûr ?
Non. L'affine est un chiffre monoalphabétique classique pour les énigmes et l'enseignement, pas pour la confidentialité. Ne l'utilisez jamais pour des mots de passe ou des données sensibles.
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/affine \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"AFFINE CIPHER","a":5,"b":8}'const res = await fetch("https://api.kit.forhosting.com/enc/affine", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/affine",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/affine", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"AFFINE CIPHER","a":5,"b":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"AFFINE CIPHER","a":5,"b":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/affine", 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": "AFFINE CIPHER",
"a": 5,
"b": 8
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.affine",
"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 a partage un facteur avec vingt-six, la requête échoue avec invalid_input car la correspondance ne serait pas bijective.
Comment fonctionne la correspondance affine et ce que contient la réponse
Le chiffrement traite chaque lettre latine comme un nombre de zéro à vingt-cinq, le multiplie par la clé a, ajoute la clé b et réduit modulo vingt-six avant de réécrire la lettre avec sa casse d'origine. Les majuscules de A à Z et les minuscules de a à z utilisent les mêmes décalages, de sorte que les phrases à casse mixte conservent leur forme et que seule l'identité des lettres change. Les chiffres, espaces, signes de ponctuation, emoji et écritures non latines passent inchangés, donc les messages gardent leurs espacements et symboles. Le mode optionnel mode vaut encrypt par défaut ; encrypt et encode appliquent la correspondance directe, tandis que decrypt et decode l'inversent. Le déchiffrement retrouve le texte en clair en calculant un inverse modulaire a_inv tel que a·a_inv ≡ 1 mod 26, puis en évaluant D(y)=a_inv·(y−b) mod 26 pour chaque lettre. Envoyez du JSON avec le champ chaîne obligatoire text contenant tout message non vide, l'entier obligatoire a entre un et vingt-cinq et premier avec vingt-six, et l'entier obligatoire b entre zéro et vingt-cinq ; les alias input, value, s et message fonctionnent pour le corps, multiplier, key_a et alpha sont des alias de a, tandis que shift, key_b et beta sont des alias de b. En cas de succès, la réponse inclut result avec le texte transformé, mode normalisé en encrypt ou decrypt, a et b qui reprennent les clés, a_inv avec l'inverse utilisé pour le déchiffrement, length égal au nombre de caractères de l'entrée, letters_transformed comptant combien de lettres A–Z ou a–z ont réellement été transformées, et method égal à affine pour que les clients puissent brancher sans renifler la forme de la réponse. Des entrées identiques produisent toujours un JSON identique, car le traitement est de l'arithmétique modulaire pure, sans réseau, sans graine aléatoire et sans horloge.
Règles de validation, clés premières avec 26 et pièges courants
Un text absent, non chaîne ou vide déclenche invalid_input et n'est pas facturé sur l'API prépayée une fois que le moteur rejette la requête. L'absence de a ou b, des clés non entières, un a hors de l'intervalle un à vingt-cinq ou un b hors de zéro à vingt-cinq échouent également avec invalid_input. Les espaces, chiffres et signes de ponctuation ne sont pas supprimés : seules les lettres latines participent à la substitution, donc les chaînes très ponctuées renvoient tout de même un résultat complet avec un letters_transformed plus faible.
Utilisation de l'API, tarifs, scénarios de classe et limites pratiques
Recourez à 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 avec solde à $0.002 par élément traité avec succès ; les échecs de validation ne consomment jamais de solde après rejet. Les auteurs de SDK peuvent brancher le champ result directement sur un bouton de copie, tandis que a, b, a_inv et method rendent les exemples OpenAPI auto-explicatifs. Gardez des charges utiles de taille raisonnable pour un appel d'élément dans un isolate de Worker ; cet outil sert aux messages et extraits, pas aux blobs binaires de plusieurs mégaoctets.
Cas d'intégration
Démonstrations d'arithmétique modulaire en classe
Les enseignants montrent que seuls les multiplicateurs premiers avec 26 sont inversibles, comparent l'affine à Atbash ou ROT13 et fixent a égal à cinq et b égal à huit comme fixture de manuel.
Fixtures de pipeline et de CI
Les scripts et tests d'intégration continue fixent des sorties affines déterministes et l'erreur de a non premier pour que les bugs accidentels d'inverse ou de gcd échouent vite.