Aller au contenu

Decodage secret


Messages recommandés

  • E-Bahut
Posté(e)

Bonjour,

T'es sûr d'être en CM1 ?

Je ne sais pas si ça va faire avancer le schmilblick mais il semble que le deuxième nombre est égal à la moitié du premier, moins1.

 

  • E-Bahut
Posté(e)

Bonjour Denis,

Ça fait effectivement avancer le schmilblick ! Il suffit d'y rajouter que l'indice dans l'ordre alphabétique des lettres à chercher est, soit égal au nombre trouvé (compte à partir de A) ou à 26 moins le nombre trouvé (décompte à partir de Z).  Après, il faut choisir la bonne lettre parmi les deux possibilités, mais, curieusement, c'est systématiquement celle correspondant au décompte.
De là à dire que c'est évident pour un élève de CM1...

Mais, de toute façon, ça n'a pas du tout l'air d'intéresser le demandeur.

Bonnes fêtes de fin d'année en attendant !

  • E-Bahut
Posté(e)

Bonjour Jules,

Je ne comprends pas ces flèches qui ont l'air d'expliquer le cheminement des calculs. Dans un cas le deuxième nombre donne la lettre dans l'ordre alphabétique et la deuxième lettre est Z-n-1 (ou A - n). Dans la deuxième ligne, c'est l'inverse. J'ai essayé d'y coller du mod(26) mais je ne m'en suis pas sorti.

Pourquoi ces deux cas, et pourquoi deux lettres à chaque fois ?

 

Ce ne sera pas la dernière fois que l'on aura un demandeur faisant un passage fugitif.

Il n'est même pas furtif. Sauf s'il ne s'est pas connecté volontairement et visite en anonyme.

Bonnes fêtes également.

  • E-Bahut
Posté(e)

Je l'ai :

DEUX FOIS TROIS EGAL SIX

Excel et trois essais :

A = 0 ou A = 1 + alphabet à l'endroit ==> ça marche pas

 A = 1 + alphabet à l'endroit ==> ça marche.

A = 0 et alphabet à l'envers, ça marche.

Edit : erreur avec l'alphabet à l'endroit. Je corrige.

  • E-Bahut
Posté(e)

Bonjour,

Pour info, moi, sous LibreOffice Calc, j'ai également mis en B =A/2-1, puis, dans C =CAR(64+B) et dans D =CAR(26+65-B1).
A la main, ça marche dans les deux sens avec le même nombre, à condition bien sûr de commencer avec A=1 et Z=1.

  • E-Bahut
Posté(e)

À toi aussi.

Je n'ai pas fait le déchiffrement, mais je sais ce que tu as mis, grâce aux deux lettres répétées. (Quoique j'aurais pu utiliser ta feuille Excel.)

  • E-Bahut
Posté(e)

Qui osera Python pour décoder ?

Puis pour coder ??

@Mikade

Moi j'aimerais bien savoir en quelle classe tu es.

Et puis que tu nous dises si tu as compris la méthode de décodage...

Tu nous dois bien une réponse car malgré ton silence, on a fait tout notre possible pour t'aider...

Joyeux Noël à toi et à tous ceux qui te sont Chers 😍.

  • E-Bahut
Posté(e)

Bonjour PAVE,

Joyeux Noël également.

A propos de Python, le codage ne devrait pas poser de gros problème. Au départ, le décodage non plus. Par contre, comment expliquer à Python qu'il ne faut retenir que les lettres formant un mot intelligible ? Ça, c'est une autre paire de manches

  • E-Bahut
Posté(e)

Il  faut un fichier avec une liste des trigrammes ou tétragrammes français avec leur fréquence d'apparition. Ensuite par comparaison avec les fréquences du message déchiffré, on essaie de voir si il y a une ressemblance.

http://practicalcryptography.com/cryptanalysis/text-characterisation/quadgrams/

J'ai un programme qui fonctionne sur ce principe pour casser du Vigenère ou des chiffrements par substitution (mais basé sur l'anglais.).

Posté(e)
il y a 32 minutes, julesx a dit :

Bonjour PAVE,

Joyeux Noël également.

A propos de Python, le codage ne devrait pas poser de gros problème. Au départ, le décodage non plus. Par contre, comment expliquer à Python qu'il ne faut retenir que les lettres formant un mot intelligible ? Ça, c'est une autre paire de manches

Bonjour,

Rien ne dit d'ailleurs qu'il est impossible d'avoir à partir d'un même code plusieurs messages différents intelligibles.

 

  • E-Bahut
Posté(e)

Bonsoir à tous,

Juste pour le fun, un programme de décodage en trichant, comme l'auteur de l'énoncé, c'est à dire avec toutes les lettres en partant de la fin :

@essai.py

Encore bonnes fêtes de fin d'année à tous.

  • E-Bahut
Posté(e)

Désolé, Jules, mais je ne parviens pas à télécharger ton fichier... il est écrit "indisponible" sous le nom un peu bizarre d'ailleurs avec un @ comme première lettre.

On a hâte de découvrir mais en ce soir de fête, rien ne presse. Bon Noël.

image.png.4f6e7544ee114a1b07840ab98487c5c1.png

  • E-Bahut
Posté(e)

Bonjour,

Désolé, je n'avais pas fait attention à "indisponible". Probablement que les fichiers .py ne sont pas acceptés par E-bahut. Ci-joint le code.

D0=input("Entrez le message codé en séparant les groupes de chiffres par un espace ") 
#D0="48461408 44263818 1620263818 46425432 183808"
#D0="362606461408 28264632"
l=len(D0)
D=""
L=[]
for i in range(0,l):
    if D0[i]==" ":
        D=D+"  "
    else:
        D=D+D0[i]
l=len(D)

for i in range(0,l-1,2):
    if D[i]==" ":
        c=-1
    else:
        c=int(D[i]+D[i+1])//2-1
    L.append(c)
for i in range(0,len(L)):
    if L[i]==-1:
        print(" ",end="")
    else:
        print(chr(26+65-L[i]),end="")

Si on ne veut pas se fatiguer à entre le message codé à la main, on fait un copier-coller d'un des deux #D0.

P.S. : Le @, c'est pour que le fichier apparaisse en tête de ma liste.

  • E-Bahut
Posté(e)

En fait, ce n'était pas si compliqué en acceptant la "tricherie". Le seul endroit où j'ai eu des difficultés, c'était de gérer la prise de deux caractères successifs alors que les noms étaient séparés a priori par un espace unique. Finalement, je n'ai pas trouvé d'autre solution que d'introduire un deuxième espace aux endroits où il n'y en avait qu'un (première partie du script).

Je n'y ai pas encore réfléchi, mais je pense que le script pour le codage ne devrait pas poser plus de difficulté. On pourrait même mélanger de façon aléatoire les aller-retours. Par contre, là, il faut alors améliorer le décodage en affichant les deux groupes possibles et en laissant l'utilisateur faire le tri. Avis aux amateurs.

Encore bonnes fêtes à tous.

  • E-Bahut
Posté(e)

Pour le moment, j'ai bricolé ça :

#===============================================================
#
#             Déchiffrage algo e-Bahut
#
#===============================================================
import re
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

#============================== Entrées ========================

code = "362606461408 28264632"
#code = input("quel est le code à déchiffrer :")

code = re.sub('[^0-9]|\\s','',code.upper()) # Supprime ce qui n'est pas numérique.
L = len(code)
if (L)%2 != 0:
    print("Il faut un nombre pair de chiffres")
#============================ calculs ==============================
clair1 = ""
clair2 = ""
for i in range(0, L, 2):
    lettre = code[i: i+2]
    indice = int (int (lettre) / 2 -1 )
    clair1 += alphabet[26 -indice]
    clair2 += alphabet[indice-1]

#============================ Sorties ==============================

print ("clair1 : ", clair1)
print ("clair2 : ", clair2)

 

Il y a 4 heures, julesx a dit :

Je n'y ai pas encore réfléchi, mais je pense que le script pour le codage ne devrait pas poser plus de difficulté.

Ben  je viens de supprimer mon chiffrage car je me suis aperçu qu'il fallait insérer un 0 à gauche des nombres de un chiffre. Donc un test supplémentaire à faire.

  • E-Bahut
Posté(e)

Le chiffrage :

#===============================================================
#
#             Chiffrage algo e-Bahut
#
#===============================================================
import re
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

#============================== Entrées ========================

#texte = "JOYEUX Noel"
texte = "deux fois trois egal six"
#texte = input("quel est le texte à chiffrer :")

texte = re.sub('[^A-Z]|\\s','',texte.upper()) # Supprime ce qui n'est pas alphabétique.
L = len(texte)
#============================ calculs ==============================
message = ""
for i in range(0, L):
    lettre = texte[i]
    indice = 26-alphabet.find(lettre)
    code = str((indice + 1) * 2)
    if len(code) == 1:
        code = "0"+code
    message += code
    indice = alphabet.find(lettre)
    
print (message)

 

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...
spam filtering
spam filtering