Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 17-10-2025 17:58:37
- Dilou
- Membre
- Inscription : 04-07-2018
- Messages : 29
Discussion autour de Vigénère
Bonjour à tous,
Etes vous d'accord avec la définiton suivante :
Oui, "Le carré" de Vigénère n'est pas "incassable" par contre sa "méthode" elle, le devient si ce n'est pas l'alphabet classique "ABCD...XYZ" qui est utilisé, mais un autre alphabet "mélangé" qui devient en réalité une 2eme "clé" à "26! combinaisons ...!
je n'ai as trouvé pour l'instant dans la "littérature" d'article parlant de ce cas là à déchiffrer.
Voici un exemple de texte chiffré avec Vigénère, mais avec un alphabet "mélangé".
Faites mieux que CHATGPT ou Grok qui ont bien tenté... mais qui, à part pour la longueur de la clé, se sont bien plantés !
FF IBWITOL VUMY VL XMVWDADW FCV NKHWMDAI RW GFSHLNZT ITFJ RW TPOIQBI HIA BWHEIKQ HD JJW OJZVFTW JRI DT XUALWXWTJY ASC VI VDIMI HIB DUVXKMTMVQIVMWQ MZOSCHVJFJAKXF QJZ T FF KTAI EM BNRVC YIKVJZXLM TPOIQAHCTXHI KMBQQ XTIWAOAWZT QLLLJC PSX EIV JUQBF YI PKH HF EV MH ICTNLXP XUABVWUTG TK WCYHWWCQI NOFFKVXWHZEJ ALTI DFDVC WZA NYERUAHF RM KKTVM UV JKTLYMI FKHW WLEHX YL VQMZNTHAA PSH JLDNHCYI RMP UAUILV OF J T OJMVPSH ORNCI MDH XMPCI AACPMIYPHOYJ B MUFGF OMZJFRTZVMKM STQ FG SITIJV FF NXTC EEKRUAUV IW YC LSSY UIRTBBVH AL LQSZ PLAINZ HR NLTD IZYI KDIAXAMWQ YI DT EXMPVMKM HF ASCVOJM BYZNM STQ JTI INNYWV TM AFRV RTJ KDHTCHAHDQ X CPV RW BV JHABRGIQA OJT BEMNFFQRI DJ WHQNCLOYL FSIOJMW QJQHPTLTT NC II KQKWJ IWT FK SQ UHHE SVCNDWYQF CA NH AJ Q LA HCBUHY IHH WD UZTFGXOCC EI R WN VKIQFBQ XDTHXMHVMW IF JRIDXSH OMEJH MW BLH RJSW MAZI ZECKORXJ PH QJQHPTLTT X CPV R WURHXWBRLM YTMN KKZMHI ANRC DT JWQDUVJQL AR TTIPH WDCLTF STQ MTACH IBWITOL LQSZ VL XMLVFHQ DF CIQAHVMIC INF XX CZWYXH JJ Q LXF LQ YI DT JKTJFXH WMQZIQAHZEJ U INF DF ASX IZJI SESNIL X MACYXLMY B XULADQMFYI VMHV JA AJTC JGLZTI XHI TDMV KI IKTIQJFPXDWV XLOTHN FKCLRMYFKV DJ TQIAVCH JL KU WXJ IW JJ Q STTQFNJ
Hors ligne
#2 18-10-2025 10:27:28
- Rossignol
- Membre

- Inscription : 19-06-2015
- Messages : 307
Re : Discussion autour de Vigénère
Le texte clair est :
LA SCIENCE SANS LA RELIGION EST BOITEUSE LA RELIGION SANS LA SCIENCE EST AVEUGLE IL EST CERTAIN QUE LA CONVICTION QUE LE MONDE EST RATIONNELLEMENT COMPREHENSIBLE EST A LA BASE DE TOUTE RECHERCHE SCIENTIFIQUE CETTE CONVICTION REPOSE SUR UNE SORTE DE FOI ET JE NE SAURAIS CONCEVOIR UN VERITABLE SCIENTIFIQUE SANS CETTE FOI PROFONDE UN HOMME DE SCIENCE DOIT AVOIR LE SENTIMENT QUE DERRIERE LES CHOSES IL Y A QUELQUE CHOSE QUI RESTE INACCESSIBLE A NOTRE INTELLIGENCE QUE LA PENSEE LA PLUS PROFONDE ET LA PLUS DELICATE NE PEUT SAISIR IL PEUT ETRE CONSCIENT DE LA PRESENCE DE QUELQUE CHOSE QUE SON ESPRIT NE PEUT PAS COMPRENDRE C EST LA CE SENTIMENT QUI CONSTITUE LE VERITABLE ELEMENT RELIGIEUX JE NE CROIS PAS EN UN DIEU PERSONNEL ET JE NE L AI JAMAIS NIE AU CONTRAIRE JE L AI EXPRIME CLAIREMENT SI QUELQUE CHOSE EN MOI PEUT ETRE QUALIFIE DE RELIGIEUX C EST L ADMIRATION SANS BORNES POUR LA STRUCTURE DU MONDE AUTANT QUE NOTRE SCIENCE PEUT LA REVELER CE SENTIMENT EST LA SOURCE DE L ART ET DE LA SCIENCE AUTHENTIQUE C EST CE QUI NOUS POUSSE A CHERCHER A COMPRENDRE MEME SI NOUS SAVONS QUE NOUS NE COMPRENDRONS JAMAIS TOTALEMENT LE MYSTERE DE LA VIE ET DE L UNIVERS
@+
Hors ligne
#4 18-10-2025 12:34:38
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Discussion autour de Vigénère
Bonjour,
(...)
Oui, "Le carré" de Vigénère n'est pas "incassable" par contre sa "méthode" elle, le devient si ce n'est pas l'alphabet classique "ABCD...XYZ" qui est utilisé, mais un autre alphabet "mélangé" qui devient en réalité une 2eme "clé" à "26! combinaisons ... !
(...)
Faites mieux que CHATGPT ou Grok qui ont bien tenté... mais qui, à part pour la longueur de la clé, se sont bien plantés !
Ben voilà... Rossignol a réussi à casser l'incassable, et ça n'a pas traîné...
Alors, Dilou... Satisfait, déçu ?
Non, Rossignol n'est pas un extraterrestre : il est bien "outillé", et a une grande habitude.
J'avais moi aussi, il y a quelques années cru pouvoir "ruser", avec la clé du Vigenère, à ma façon...
Et feu notre spécialiste, alors nonagénaire, m'avait démoli ma ruse en 3 coups de cuiller à pot, sans même trouver la clé...
En outre je pense que tu as dû faciliter la tâche de Rossignol en présentant un texte préservant la longueur des mots... et non, comme c'est l'usage, en blocs de 5 lettres...
Au temps pour les IA !!!
@+
Dernière modification par yoshi (18-10-2025 13:40:18)
Hors ligne
#6 18-10-2025 16:58:24
- Rossignol
- Membre

- Inscription : 19-06-2015
- Messages : 307
Re : Discussion autour de Vigénère
La méthode de résolution est simple dans son principe si on a une bonne fonction de score. Il est facile de trouver la longueur de la clé : 14.
On part de 14 alphabets aléatoires et on les modifie un par un circulairement.
Si la modification améliore le score, on garde la modification, sinon on passe au suivant.
Le texte apparait progressivement. Il est imparfait, mais on peut facilement corriger les typos.
Télécharger le fichier brut4g_space_fr.txt et le placer dans le même répertoire que le script python suivant.
Lancez le script et attendez un bon moment...
from math import log10, exp
import random
logf4g ={} # dic des log des fréquences des 4-grammes
f = open('brut4g_space_fr.txt')
total = 0 # effectif total
for line in f:
(w, c) = line.split(sep= ' ')
logf4g[w] = int(c)
total += int(c)
for w in logf4g:
logf4g[w] = -log10(logf4g[w]/total)
f.close()
def logscore(s): # fonction de score
logsum = 0
default = 10 # quadrigramme inconnu
for i in range(len(s)-3):
logsum += logf4g.get(s[i:i+4], default)
return logsum
alpha0 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def sub_polyalpha(crypto, liste_alpha):
""" Substitution polyalphabétique sur 'crypto'.
Les lettres de 'crypto' sont chiffrées séquentielement par les
alphabets de 'liste_alpha'
"""
idx = 0
clair = ''
for c in crypto:
if c in alpha0:
clair += liste_alpha[idx][alpha0.index(c)]
idx = (idx+1)%len(liste_alpha)
else:
clair += c
# idx = (idx+1)%len(liste_alpha)
return clair
def nouvel_état(alpha):
c = list(alpha)
i, j, k, m = random.sample(range(len(alpha)), 4)
choix = random.random()
if choix < 0.7:
c[i], c[j] = c[j], c[i] # permutation deux éléments
elif choix < 0.8:
c[i], c[j], c[k] = c[j], c[k], c[i] # permutation circulaire 3 éléments
elif choix < 0.9:
c[i], c[j], c[k], c[m] = c[j], c[k], c[m], c[i] # idem 4 éléments
else:
if i > j:
i, j = j, i # on veut i < j
m = c[i:j]
m.append(m.pop(0)) # rotation du segment c[i:j]
c[i:j] = m
return ''.join(c)
def critère_Metropolis(delta, T):
if delta <= 0: return True
if random.random() < exp(-delta/T) and delta/T < 0.05:
return True
return False
def RS_PolyAlpha(crypto, periode, max_iter = 0, CoolRatio = 0.5, trace=True): # recuit simulé
if max_iter == 0: # valeur par défaut
max_iter = periode*10000
myalphas = [] # liste des alphabets courants
a = list(alpha0)
for i in range(periode):
random.shuffle(a)
myalphas.append(''.join(a))
clair = sub_polyalpha(crypto, myalphas)
old_score = logscore(clair)
T = 200 # température initiale
print('T0 =', T)
best_clair = clair
best_alphas = myalphas.copy()
best_score = old_score
freeze = 0
idx_alpha = 0
while True:
nb_iter = 0
while nb_iter < max_iter:
nalphas = myalphas.copy()
nalphas[idx_alpha] = nouvel_état(nalphas[idx_alpha])
clair = sub_polyalpha(crypto, nalphas)
new_score = logscore(clair)
delta = new_score - old_score
if critère_Metropolis(delta, T): # transition acceptée
myalphas = nalphas.copy()
old_score = new_score
if old_score < best_score:
best_score = old_score
best_alphas = myalphas.copy()
best_clair = clair
if trace:
print(best_score) # trace
print(best_clair[:80])
print()
nb_iter += 1
idx_alpha = (idx_alpha+1)%periode
T *= CoolRatio
print('T =', T)
if T < 10: # condition d'arrêt
break
print("*** Meilleure solution ***")
print('score = ', best_score)
print('alphabets :', best_alphas)
print(best_clair)
# Le cryptogramme
k = 'FF_IBWITOL_VUMY_VL_XMVWDADW_FCV_NKHWMDAI_RW_GFSHLNZT_ITFJ_RW_TPOIQBI_\
HIA_BWHEIKQ_HD_JJW_OJZVFTW_JRI_DT_XUALWXWTJY_ASC_VI_VDIMI_HIB_DUVXKMTMVQIVMWQ_\
MZOSCHVJFJAKXF_QJZ_T_FF_KTAI_EM_BNRVC_YIKVJZXLM_TPOIQAHCTXHI_KMBQQ_XTIWAOAWZT_\
QLLLJC_PSX_EIV_JUQBF_YI_PKH_HF_EV_MH_ICTNLXP_XUABVWUTG_TK_WCYHWWCQI_NOFFKVXWHZEJ_\
ALTI_DFDVC_WZA_NYERUAHF_RM_KKTVM_UV_JKTLYMI_FKHW_WLEHX_YL_VQMZNTHAA_PSH_\
JLDNHCYI_RMP_UAUILV_OF_J_T_OJMVPSH_ORNCI_MDH_XMPCI_AACPMIYPHOYJ_B_MUFGF_\
OMZJFRTZVMKM_STQ_FG_SITIJV_FF_NXTC_EEKRUAUV_IW_YC_LSSY_UIRTBBVH_AL_LQSZ_\
PLAINZ_HR_NLTD_IZYI_KDIAXAMWQ_YI_DT_EXMPVMKM_HF_ASCVOJM_BYZNM_STQ_JTI_INNYWV_\
TM_AFRV_RTJ_KDHTCHAHDQ_X_CPV_RW_BV_JHABRGIQA_OJT_BEMNFFQRI_DJ_WHQNCLOYL_\
FSIOJMW_QJQHPTLTT_NC_II_KQKWJ_IWT_FK_SQ_UHHE_SVCNDWYQF_CA_NH_AJ_Q_LA_HCBUHY_\
IHH_WD_UZTFGXOCC_EI_R_WN_VKIQFBQ_XDTHXMHVMW_IF_JRIDXSH_OMEJH_MW_BLH_RJSW_\
MAZI_ZECKORXJ_PH_QJQHPTLTT_X_CPV_R_WURHXWBRLM_YTMN_KKZMHI_ANRC_DT_JWQDUVJQL_\
AR_TTIPH_WDCLTF_STQ_MTACH_IBWITOL_LQSZ_VL_XMLVFHQ_DF_CIQAHVMIC_INF_XX_CZWYXH_\
JJ_Q_LXF_LQ_YI_DT_JKTJFXH_WMQZIQAHZEJ_U_INF_DF_ASX_IZJI_SESNIL_X_MACYXLMY_B_\
XULADQMFYI_VMHV_JA_AJTC_JGLZTI_XHI_TDMV_KI_IKTIQJFPXDWV_XLOTHN_FKCLRMYFKV_DJ_\
TQIAVCH_JL_KU_WXJ_IW_JJ_Q_STTQFNJ'
RS_PolyAlpha(k, 14, CoolRatio=0.8)
La clé de chiffrement est : EINSTEINALBERS
Pourquoi un S à la fin ? C'est pour tromper l'ennemi ?
@yoshi : La balise (code) n'utilise plus une police à chasse fixe. C'est gênant. Exemple:
A A A
@+
Hors ligne
#7 18-10-2025 17:36:38
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Discussion autour de Vigénère
Bonsoir,
@Rossignol
J'avais bien cru le déceler dans mon dernier post...
Puisque tu confirmes, je n'avais pas rêvé. Je vais donc illico en référer à Fred...
Merci
@+
[EDIT]
Rossignol, la balise code, a toujours fonctionné ainsi.
Fred avait fait la modif suivante : il fallait utiliser la balise code ainsi : code = crypto
Mais maintenant, ça ne marche plus :
Je reprends ton exemple :
W W W
I I I
Dernière modification par yoshi (19-10-2025 14:39:48)
Hors ligne
#8 18-10-2025 22:06:09
- Jericho
- Membre
- Inscription : 08-09-2021
- Messages : 44
Re : Discussion autour de Vigénère
Bonsoir,
Je suis un peu ce fil car il a piqué ma curiosité.
Ok pour pour la recherche du clair par recuit simulé : méthode redoutable que j'ai utilisée parfois.
La clef littérale trouvée par Rossignol correspond bien au motif de la clef numérique que mon script avait trouvé : [2, 4, 17, 13, 21, 2, 4, 17, 8, 10, 3, 2, 14, 13]
Mais j'ai une petite remarque à faire sur la reconstruction de la grille à partir du couple clair/crypto.
Cela me donne (dommage pour la police sans chasse fixe) :
-----------------------------------------------------
E | L . X P I R D A H N . F T M Z E O C J V S W . K . .
I | F O K E H C P L A . . R V T U I Z X N W J . . . Q .
N | W K O J M . . V T H . Y L A D N . Q I F E . . . . .
S | T C B U J W Z M N E . V H I K S X Y P A D L . . . .
T | B . U M V . . Y W . . Q R F E T P Z A C H . . . . .
E | L . X P I R D A H N . F T M Z E O C J V S W . K . .
I | F O K E H C P L A . . R V T U I Z X N W J . . . Q .
N | W K O J M . . V T H . Y L A D N . Q I F E . . . . .
A | C . D H L . I R F . . X Y W J A S G T B M Q . . . .
L | X . P A F . . . R . . K B Y N L J D V Q T . . . . .
B | U . M Y Q . . Z O X . S G K L . A N C D R . . T . .
E | L . X P I R D A H N . F T M Z E O C J V S W . K . .
R | G N I F C P L K X . . D O Q T R M E Y Z W . . . J .
S | T C B U J W Z M N E . V H I K S X Y P A D L . . . .
Les points sont les lettres non rencontrées lors de la correspondance clair/crypto.
On remarque que chaque lettre de la clef a son propre alphabet mélangé...
Dans ce cas, ce n'est pas 26! qui donne le cardinal de l'espace des clefs, mais beaucoup plus.
Avec 9 lettres différentes pour la clef (sur les 14) cela donne : (26! )^9 ( si je ne fais pas d'erreur).
Dernière modification par Jericho (19-10-2025 07:56:00)
Hors ligne
#9 19-10-2025 12:08:38
- Rossignol
- Membre

- Inscription : 19-06-2015
- Messages : 307
Re : Discussion autour de Vigénère
Il n'y a qu'un seul alphabet qui est décalé comme pour Vigenère.
Notre ami Dilou a choisi comme clé pour l'alphabet un pangramme bien connu :
"Portez ce vieux whisky au juge blond qui fume".
Ce qui donne l'alphabet : PORTEZCVIUXWHSKYAJGBLNDQFM
Pour la clé EINSTEINALBERS, on obtient la table :
P O R T E Z C V I U X W H S K Y A J G B L N D Q F M
- - - - - - - - - - - - - - - - - - - - - - - - - -
E Z C V I U X W H S K Y A J G B L N D Q F M P O R T
I U X W H S K Y A J G B L N D Q F M P O R T E Z C V
N D Q F M P O R T E Z C V I U X W H S K Y A J G B L
S K Y A J G B L N D Q F M P O R T E Z C V I U X W H
T E Z C V I U X W H S K Y A J G B L N D Q F M P O R
E Z C V I U X W H S K Y A J G B L N D Q F M P O R T
I U X W H S K Y A J G B L N D Q F M P O R T E Z C V
N D Q F M P O R T E Z C V I U X W H S K Y A J G B L
A J G B L N D Q F M P O R T E Z C V I U X W H S K Y
L N D Q F M P O R T E Z C V I U X W H S K Y A J G B
B L N D Q F M P O R T E Z C V I U X W H S K Y A J G
E Z C V I U X W H S K Y A J G B L N D Q F M P O R T
R T E Z C V I U X W H S K Y A J G B L N D Q F M P O
S K Y A J G B L N D Q F M P O R T E Z C V I U X W H
Si on met les colonnes par ordre alphabétique, la "symétrie de position" n'est plus visible. On dit qu'elle est latente.
@+
Dernière modification par Rossignol (20-10-2025 10:42:23)
Hors ligne
#10 19-10-2025 12:57:57
- Jericho
- Membre
- Inscription : 08-09-2021
- Messages : 44
Re : Discussion autour de Vigénère
Merci pour cet éclaircissement !
Je dois avouer que j'étais complètement passé à côté de cela : je m'évertuais à retrouver les alphabets de la grille en laissant l'alphabet clair dans l'ordre normal, alors qu'il eût fallu juste retrouver l'alphabet clair mélangé en premier.
Dernière modification par Jericho (19-10-2025 13:00:21)
Hors ligne
#11 19-10-2025 20:02:18
- PETARDIER FERME
- Membre
- Inscription : 14-01-2023
- Messages : 12
Re : Discussion autour de Vigénère
Bonjour à tous,
Un peu déçu par ce “carré incohérent”… on est en réalité sur un chiffre de type Quagmire III, si je ne m’abuse.
Je m’attendais à un véritable carré incohérent, du genre de la J-998 de Jericho ;-)
Tant pis, je vais aller user quelques neurones ailleurs.
P.S. : sur un autre site, on donne un lien vers cette discussion en annonçant un carré de 26×26 incohérent.
Dernière modification par PETARDIER FERME (19-10-2025 20:13:00)
Hors ligne
Pages : 1







