Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
- Accueil
- » Cryptographie
- » Petit challenge cryptologie
- » Répondre
Répondre
Résumé de la discussion (messages les plus récents en premier)
- Jericho
- 07-12-2025 20:58:56
@Rossignol
J'ai beaucoup apprécié ton code pour la résolution de l'énigme.
Le mien fonctionne aussi, mais il est beaucoup plus... disons "rustique" !
- Chrispaul
- 07-12-2025 19:28:43
Merci beaucoup Rossignol, le texte clair est très émouvant.
- Rossignol
- 07-12-2025 18:51:03
La règle de formation des alphabets est étonnante, car elle utilise une transposition par bloc ce qui est très rare en cryptographie classique.
Donc, à noter : les professeurs de cryptographie moderne ont une propension à utiliser les transpositions par bloc (déformation professionnelle) :-))
Voir ce vieux fil de discussion (10 ans déjà !).
Pour les curieux qui veulent lire le message clair, je propose le script Python suivant :
# coding: utf-8
# le cryptogramme
k = 'IGNVJATHCPHABPGOFSALMTHOMNQHNAGZCTLHHDBHGHZSUTLDPTKNBR\
KMWOSBHHWPPCTGOQQPWQVMHFMPDCREOCTSSTUCHDCTAQPRFSBSNLQJMFNBB\
QUBVDKVBTQURIEARVRDQHSQBBUQLILJVWNMPEDXKFIKFPBDZOTSHHRHOSGN\
DOQITDPJLGIHPHAAEHCSWASAUNVXGTWLNETBULNMDLDWNHPEDXLPGTUFHIU\
QTFBHTWRNEJGISVODSDMFBJRXIUOSQDAZIALEQCWBHKDGELERXTIFGYCRIU\
UVHEICTFRDTPTFKHOJRMCPRFPLDGPFACRPEOOORFUQAOEFCPDCUAIASSLEN\
BFUGSCAKSAUBQZ'
# Les clés
Keys = 'lamotteducaire manosque largentierelabessee bram \
villefranchederouergue aixenprovence marseille salondeprovence \
saintflour crest livronsurdrome authonduperche grandcombe\
nimes lodeve belabre chinon legrandlemps orleans boumourt \
dombaslesurmeurthe nancy dieuze metz tarbes strasbourg \
blodelsheim sathonaycamp louhans aixlesbains paris \
tournanenbrie drancy pontoise survilliers'
# alphabet standard
alpha26 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def key2alpha(key):
""" Retourne l'alphabet correspondant à la clé """
p = [0]*len(key)
idx = 0
for c in alpha26:
i = key.find(c, 0)
while i != -1:
p[i] = idx
idx += 1
i = key.find(c, i+1)
alpha = alpha26 + '*'*(len(p) - 26%len(p))
Blocs = [alpha[i:i+len(p)] for i in range(0, 26, len(p))]
alpha = ''
for bloc in Blocs:
alpha += ''.join([bloc[p[i]] for i in range(len(p))])
return alpha.replace('*', '')
# la liste des alphabets de chiffrement
listalpha = [key2alpha(key.upper()) for key in Keys.split()]
def D_sub_polyalpha(crypto, liste_alpha):
""" Déchiffre le crypto à partir de la liste des
alphabets de chiffrement
"""
idx = 0 # index de l'alphabet
plain = ''
for c in crypto:
plain += alpha26[ liste_alpha[idx].index(c) ]
idx = (idx+1)%len(liste_alpha)
return plain
print(D_sub_polyalpha(k, listalpha))
@+
- Chrispaul
- 07-12-2025 09:57:05
Bonjour à tous,
Merci à Jericho pour toutes ces explications. Cette énigme a été postée en même temps sur ce site et sur Facebook. Pour ceux qui seraient intéressés par sa résolution, vous trouverez le mode de déchiffrement de cette énigme expliqué sur le groupe "Casse-tête, énigmes et paradoxes" dans la publication de Dupuy Anthony du 14 novembre 2025 .
- Jericho
- 07-12-2025 09:03:34
Heureusement que la commune d’Y n’est pas dans la liste, car il aurait fallu 25 blocs supplémentaires… et tout ça juste pour obtenir un alphabet ordonné ;)
Tout à fait comme toute lettre unique dans le nom de la ville ou d'autres noms de villes qui ont plus de caractères mais qui présentent un motif de lettres particulier... je te laisse chercher. ;)
Je suis quand même étonné de la difficulté de l'exercice proposé car si on en croit le post de Djouddu34, les "étudiants" n'ont eu droit qu'à un seul cours "Histoire de la cryptologie, le lundi 10/11/25 Chiffre de César, le Chiffre de Vigenère, Principes de Kerckhoffs, Vernam et masque jetable" ?
Beaucoup de choses à assimiler en une fois non ?
- PETARDIER FERME
- 06-12-2025 20:02:55
Félicitations à toi, Jericho,
Finalement, tu n’as pas passé une éternité à construire ces alphabets de déchiffrement.
Il faut dire que cette construction n’est pas standard et qu’elle n’est pas non plus une variante raisonnable de standard connue.
Heureusement que la commune d’Y n’est pas dans la liste, car il aurait fallu 25 blocs supplémentaires… et tout ça juste pour obtenir un alphabet ordonné ;)
Sinon, je vois quelques coquilles dans le clair, mais elles ne nuisent pas à la compréhension.
Le système est faible : sa sécurité repose uniquement sur la combinaison suivante :
un message très court par rapport à la longueur de la clef périodique
le secret de construction des alphabets.
Tripler la taille du message ? Et hop, tout s’écroule comme un château de cartes, même sans connaître la méthode de génération des alphabets et les mots-clefs.
La seule faiblesse exploitable ici est le secret de construction des alphabets, et Jericho l’a brillamment identifiée et exploitée. Encore bravo à toi !
Honnêtement, je m’attendrais à ce que le crypto de fin de formation ressemble plutôt à un standard moderne, pas à une substitution poly-alphabétique à clef périodique ;)
- Jericho
- 06-12-2025 10:39:48
Contexte : ce challenge est issu d'un cours de cryptologie dans une formation Cyber de policiers.
Après quelques errements et erreurs dans l'énoncé de la part du formateur, le sujet a été corrigé et ne correspond plus tout à fait à l'énoncé ci-dessus. Mais la version corrigée est encore imparfaite.
Après de longues recherches sur plusieurs jours et j'ai enfin réussi à obtenir le clair que je ne dévoilerai pas ici.
Des remarques s'imposent toutefois :
- il est inconcevable qu'une formation officielle sur un sujet aussi pointu souffre d'imprécisions
- le crypto comprend encore des erreurs : un traitement informatique de chiffrement avec un algorithme bien implanté et testé ne doit pas produire d'erreur à la sortie.
- la difficulté de l'exercice me fait douter de l'aptitude des personnes en formation générale de cryptologie (et sans doute sommaire) à résoudre ce type de crypto sans aucun indice quand à la construction des alphabets de déchiffrement (oui c'est un chiffrement polyalphabétique !)
Voici les données corrigées pour un déchiffrement sans erreur :
Les villes :
Le crypto :
IGNVJ THCPH ABPGO FSALM THOMN QHNAG ZCTLH HDBHG HZSUT LDPTK NBRKM WOSBH HWPPC TGOQQ PWQVM HFMPD CREOC TSSTU CHDCT AQPRF SBSNL QJMFN BBQUB VDKVB TQURI EARVR DQHSQ BUQLI LJVWN MPEDX KFIKF PBDZO TSHHR HOSGN DOQIT DPJLG IHPHA EHCSW ASAUN VXGTW LNETB ULNMD LDWNH PEDXL PGTUF HIUQT FBHTW RNEJG ISVOD SDMFB JRXIU OSQDA ZIALE QCWBH KDGEL ERXTI FGYCR IUUVH EICTF RDTPT FKHOJ RMCPR FPLDG PFACR PEOOO RFUQA OEFCP DCUAI ASSLE NBFUG SCAKS AUBQZ
-----------------------------------------
Edité par Yoshi.
Via Python, pour une présentation optimum, j'ai utilisé l'ajout par Fred de la fonction =crypto à la balise code :
[ code=crypto ] (sans espaces)
Cela avait été une demande de feu notre doyen et cryptomane averti, nerosson (Paix à son âme). Fred avait réagi très vite...
- Djouddu34
- 13-11-2025 23:08:39
Bonjour, voici un petit challenge pour vous :
Votre assistant-professeur en chef manubuntu, devenu familier du transport en TER à la faveur de sa mission à votre service, entreprend de créer un nouveau système de chiffrement basé sur les systèmes qu'il a présentés en cours (Histoire de la cryptologie, le lundi 10/11/25 Chiffre de César, le Chiffre de Vigenère, Principes de Kerckhoffs, Vernam et masque jetable). Les trains de la SNCF étant réputés comme étant très très ponctuels, il envisage également un Tour de France en TER.
Voici l'itinéraire qu'il a prévu: #0 : La Motte-du-Caire ... #34 : Survilliers
lamotteducaire manosque largentierelabessee bram villefranchederouergue aixenprovence marseille salondeprovence saintflour crest livronsurdrome authonduperche grandcombe nimes lodeve belabre chinon legrandtemps orleans boumourt dombaslesurmeurthe nancy dieuze metz tarbes strasbourg blodelsheim sathonaycamp louhans aixlesbains dombaslesurmeurthe tournanenbrie drancy pontoise survilliers
Ses motivations il les a transcrites dans le cryptogramme ci dessous.
Tente de les découvrir.
IGNVJ ATHCP HABPG OFXAL MTHOM NQHNA GZCTL HHDBH GHZSU TLDPT KNBRK MWOSB HHWPP CTGOQ QPWQV MHFMP DCREO CTSST UCHDC TAQPR FSBSN LQJMF NBBQU BVDKV BTQUR IEARV RDQHS QBBUQ LILJV WNMPE DXKFI KFPBD ZOTSH HRHOS GNDOQ ITDPJ LGIHP HAAEH CSVAS AUNVX GTWLN ETBUL NMDLD WNHPE DXLPG TUFHI UQTFB HTWRN EJGIS VODSD MFBJR XIUOS QDAZI ALEQC WBHKD GELER XTIFG YCRIU UVHEI CTFRD TPTFK HOJRM CPRFP LDGPF ACRPE OOORF UQAOE FCPDC UIAIS SLENB FUGSC AKSAU BQZ
Bon courage.








