Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
trente cinq plus trente cinq
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

Fred
19-10-2025 20:20:20

Hello,
 
  Un post qui n'a pas grand chose à voir avec la discussion, juste pour vous signaler que la police à chasse fixe est de retour.
Merci Raphael !

F.

PETARDIER FERME
19-10-2025 20:02:18

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.

Jericho
19-10-2025 12:57:57

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.

Rossignol
19-10-2025 12:08:38

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.

@+

Jericho
18-10-2025 22:06:09

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) :

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
   -----------------------------------------------------
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).

yoshi
18-10-2025 17:36:38

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
Rossignol
18-10-2025 16:58:24

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...

# utf8

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:

W W W
A A A

@+

Dilou
18-10-2025 14:00:09

Bonjour YoshiGnol ,
Justement , j'aurais bien aimé que Rossignol nous parle de ses outils ...!!
je suis sur que cela aurait interréssé les lecteur de ce Forum

yoshi
18-10-2025 12:34:38

Bonjour,

Dilou a écrit :

(...)
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 !!!

@+

Dilou
18-10-2025 11:32:11

Bravo Rossignol !

Mais vous ne dites pas comment vous faites ?? Vous êtes peut-être un extraterrestre ? C'est ça en fait votre secret , Rossignol est
un extraterrestre !!!  ;-)

Rossignol
18-10-2025 10:27:28

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

@+

Dilou
17-10-2025 17:58:37

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

Pied de page des forums