Exemples et tutoriels du Gronsfeld cipher
Ce guide complet présente des exemples pas à pas de chiffrement et de déchiffrement avec le Gronsfeld cipher. Que vous prépariez des compétitions CTF, étudiiez la cryptographie classique ou soyez simplement curieux des méthodes de chiffrement historiques, ces exemples vous aideront à maîtriser le Gronsfeld cipher.
Exemple de chiffrement de base
Exemple 1: Message simple avec la clé "314"
Texte clair: HELLO Clé: 314
Chiffrement étape par étape:
| Lettre | Position | Chiffre de clé | Calcul | Résultat |
|---|---|---|---|---|
| H | 7 | 3 | (7+3) mod 26 = 10 | K |
| E | 4 | 1 | (4+1) mod 26 = 5 | F |
| L | 11 | 4 | (11+4) mod 26 = 15 | P |
| L | 11 | 3 | (11+3) mod 26 = 14 | O |
| O | 14 | 1 | (14+1) mod 26 = 15 | P |
Texte chiffré: KFPOP
Remarquez que la clé "314" se répète de façon cyclique (3, 1, 4, 3, 1, ...) pendant le chiffrement de chaque lettre.
Exemple 2: Message plus long avec la clé "2718"
Texte clair: ATTACK AT DAWN Clé: 2718
| Lettre | Position | Clé | Calcul | Résultat |
|---|---|---|---|---|
| A | 0 | 2 | (0+2) mod 26 = 2 | C |
| T | 19 | 7 | (19+7) mod 26 = 0 | A |
| T | 19 | 1 | (19+1) mod 26 = 20 | U |
| A | 0 | 8 | (0+8) mod 26 = 8 | I |
| C | 2 | 2 | (2+2) mod 26 = 4 | E |
| K | 10 | 7 | (10+7) mod 26 = 17 | R |
| (espace) | - | - | inchangé | (espace) |
| A | 0 | 1 | (0+1) mod 26 = 1 | B |
| T | 19 | 8 | (19+8) mod 26 = 1 | B |
| (espace) | - | - | inchangé | (espace) |
| D | 3 | 2 | (3+2) mod 26 = 5 | F |
| A | 0 | 7 | (0+7) mod 26 = 7 | H |
| W | 22 | 1 | (22+1) mod 26 = 23 | X |
| N | 13 | 8 | (13+8) mod 26 = 21 | V |
Texte chiffré: CAUIER BB FHXV
Exemples de déchiffrement
Exemple 3: Déchiffrement avec clé connue
Texte chiffré: KFPOP Clé: 314
Processus de déchiffrement (l'inverse du chiffrement):
| Lettre | Position | Clé | Calcul | Résultat |
|---|---|---|---|---|
| K | 10 | 3 | (10-3+26) mod 26 = 7 | H |
| F | 5 | 1 | (5-1+26) mod 26 = 4 | E |
| P | 15 | 4 | (15-4+26) mod 26 = 11 | L |
| O | 14 | 3 | (14-3+26) mod 26 = 11 | L |
| P | 15 | 1 | (15-1+26) mod 26 = 14 | O |
Texte clair: HELLO
Exemple 4: Gestion du retour circulaire
Lorsque le déchiffrement donne des nombres négatifs, on ajoute 26 avant d'appliquer le modulo:
Texte chiffré: BCD Clé: 543
| Lettre | Position | Clé | Calcul | Résultat |
|---|---|---|---|---|
| B | 1 | 5 | (1-5+26) mod 26 = 22 | W |
| C | 2 | 4 | (2-4+26) mod 26 = 24 | Y |
| D | 3 | 3 | (3-3+26) mod 26 = 0 | A |
Texte clair: WYA
Défis pratiques
Essayez de déchiffrer ces messages vous-même avant de consulter les réponses:
Défi 1: Facile
Texte chiffré: LIPPS Clé: 314 Indice: Une salutation courante
Défi 2: Moyen
Texte chiffré: WKUHH EOLQG PLFH Clé: 314 Indice: Une référence à une comptine
Défi 3: Avancé
Texte chiffré: GSRH RH Z HVXIVG NVHHZTV Clé: Inconnue (essayez la force brute !) Indice: La clé est un seul chiffre répété
Contexte historique
Pourquoi des clés numériques ?
Le comte Gronsfeld a conçu ce chiffre pour un usage militaire sur le terrain au XVIIe siècle. Les clés numériques offraient plusieurs avantages pratiques:
- Mémorisation: Des nombres comme des dates ou des désignations d'unité étaient plus faciles à retenir
- Transmission: Les clés numériques pouvaient être communiquées plus fiablement dans les conditions du champ de bataille
- Simplicité: Les soldats avaient besoin d'une formation minimale pour utiliser le chiffre correctement
- Réduction des erreurs: Moins de chiffres possibles (0-9) signifiait moins d'erreurs de chiffrement
Choix de clés historiques
Les utilisateurs historiques choisissaient souvent des clés numériques significatives:
- Dates: Des dates importantes comme 1648 (traité de Westphalie)
- Constantes mathématiques: Les premiers mathématiciens pouvaient utiliser 314159 (pi)
- Numéros d'unité: Les unités militaires pouvaient utiliser leurs numéros de régiment
- Nombres personnels: Années de naissance ou autres dates personnelles importantes
Implémentation Python
Voici une implémentation Python simple à des fins d'apprentissage:
def gronsfeld_encrypt(plaintext, key):
result = []
key_index = 0
for char in plaintext.upper():
if char.isalpha():
shift = int(key[key_index % len(key)])
encrypted = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
result.append(encrypted)
key_index += 1
else:
result.append(char)
return ''.join(result)
def gronsfeld_decrypt(ciphertext, key):
result = []
key_index = 0
for char in ciphertext.upper():
if char.isalpha():
shift = int(key[key_index % len(key)])
decrypted = chr((ord(char) - ord('A') - shift + 26) % 26 + ord('A'))
result.append(decrypted)
key_index += 1
else:
result.append(char)
return ''.join(result)
# Example usage
print(gronsfeld_encrypt("HELLO", "314")) # Output: KFPOP
print(gronsfeld_decrypt("KFPOP", "314")) # Output: HELLO
Erreurs courantes à éviter
Erreur 1: Oublier la répétition de la clé
La clé se répète continuellement. Ne recommencez pas la clé aux limites des mots ni après les espaces.
Incorrect: Utiliser 314 pour le premier mot, puis recommencer avec 3 pour le second mot Correct: Continuer la séquence de clé sur tout le message
Erreur 2: Compter les non-lettres dans la position de clé
Les caractères non alphabétiques (espaces, ponctuation) ne doivent pas faire avancer la position de la clé.
Incorrect: Avancer la position de clé pour chaque caractère, y compris les espaces Correct: Avancer la position de clé uniquement pour les lettres A-Z
Erreur 3: Mauvais sens du modulo
Pour le déchiffrement, soustrayez le chiffre de la clé au lieu de l'ajouter. Ajoutez toujours 26 avant le modulo pour gérer les résultats négatifs.
Incorrect: (C - K) mod 26 (peut produire des résultats négatifs) Correct: (C - K + 26) mod 26
Solutions des défis
Solution du défi 1
Texte chiffré: LIPPS → Texte clair: HELLO
Solution du défi 2
Texte chiffré: WKUHH EOLQG PLFH → Texte clair: THREE BLIND MICE
Solution du défi 3
Clé: 4 (répétée) Texte clair: COMP THIS IS A SECRET MESSAGE (avec la clé 4)
Remarque: selon la clé réelle, les résultats peuvent varier. Utilisez notre Gronsfeld decoder pour essayer différentes clés.
Ressources associées
- Encodeur Gronsfeld - Chiffrer vos propres messages
- Décodeur Gronsfeld - Outils de déchiffrement automatique
- Exemples Vigenère - Comparer avec le chiffrement à clé alphabétique
- Exemples Caesar - Maîtriser le chiffre de décalage fondamental
Conclusion
Le Gronsfeld cipher montre comment fonctionne le chiffrement polyalphabétique tout en restant plus simple à apprendre que le Vigenère cipher complet. Avec ces exemples, vous avez appris:
- Comment chiffrer des messages en ajoutant les chiffres de la clé aux positions des lettres
- Comment déchiffrer en soustrayant les chiffres de la clé (avec une gestion correcte du retour circulaire)
- Pourquoi les clés numériques étaient pratiques pour l'usage militaire historique
- Les pièges courants à éviter lorsque vous travaillez avec le chiffrement Gronsfeld
Entraînez-vous avec nos outils interactifs pour renforcer ces concepts et développer vos compétences en cryptoanalyse !