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

#1 04-11-2021 18:10:03

Mathieutrccc
Invité

Codage et Decodage par une fonction mathématique simple python

Bonjour, j'espere que vous allez bien j'aurais un peu besoin d'aide pour de la criptographie tres simple avec python, j'essaye de créer 2 fonctions qui encode et décode une chaine de caractère avec comme clé une fonction mathématique, mais j'ai un problème et je ne comprend pas mon erreur, voici ce que j'ai fais :


texte=("abc")
def code(texte):
    return [chr(3*ord(texte[i])-26) for i in range(len(texte))]
print(code(texte))
a=code(texte)
def decode(a):
    return [chr((ord(texte[i])+26)/3) for i in range(len(texte))]
print(decode(a))
 

la fonction utilisé est f(x)= 3x-26 et donc sa réciproque c'est (x+26)/3

le but serais de décoder ce message:

ÁFłĞġİħFłĞĕFijňĕļļĕĉďĞġİěFĶijġİłFÁFŋĉİłFłijFĭĉħĕFġL·FłĞĉł”FñijŅFěŅőL·FĉļĕFłĞĕFĭĉěġďġĉİL·FijĘFłĞĕF|yL·łFďĕİłŅļőpF²ijİ怱łFĪĕłFĉİőłĞġİěFĞijĪĒFőijŅFČĉďħpFÁĭĉěġİĉłġijİFġL·FłĞĕFĪġĭġłpF»ijFijŅłFłĞĕļĕFĉİĒFďļĕĉłĕFL·ijĭĕFĭĉěġďp

Merci de m'aider ^^

#2 04-11-2021 20:14:32

Rossignol
Membre
Inscription : 19-06-2015
Messages : 290

Re : Codage et Decodage par une fonction mathématique simple python

Bonsoir,

Attention : dans la fonction de déchiffrement, la division / renvoie un flottant.
Pour obtenir un entier il faut utiliser la division des entiers //.

Avec la fonction

def decode(a):
    return ''.join([chr((ord(a[i])+26)//3) for i in range(len(a))])

on obtient un texte presque lisible :-)

@+

Hors ligne

#3 04-11-2021 20:21:06

mathieutrccc
Invité

Re : Codage et Decodage par une fonction mathématique simple python

erreur bête de ma part merci beaucoup, j'avais fais le plus dur... Je voulais savoir si c'était possible de rendre ca plus visuelle, sans le mettre dans une liste? pour ca je crois que je ne peux pas direct mettre return et je dois décomposer non?

#4 04-11-2021 21:04:59

mathieutrccc
Invité

Re : Codage et Decodage par une fonction mathématique simple python

et d'ailleurs j'ai un problème avec le texte à décoder, c'est censé être une citation anglaise mais il y a des caractère pour lesquelles ça ne marche pas... J'aurais encore besoin d'aide si c'est possible, merci en tout cas de ta réponse rapide

#5 04-11-2021 21:30:33

Rossignol
Membre
Inscription : 19-06-2015
Messages : 290

Re : Codage et Decodage par une fonction mathématique simple python

Je ne peux pas mettre le texte en anglais sur le forum, le serveur me jette en considérant que c'est du spam !

Il faut faire les remplacements  +, --> o  et "E --> s pour obtenir le texte clair.

@+

Hors ligne

#6 04-11-2021 21:37:54

LeSingeMalicieux
Membre
Inscription : 18-01-2015
Messages : 84

Re : Codage et Decodage par une fonction mathématique simple python

Bonsoir,

Je ne programme pas en Python donc ne pourrai donner de conseils, mais Rossignol connait son sujet :)

Je me suis juste intéressé à la méthode, que je trouve intéressante. Elle ressemble à un chiffre affine, mais sans modulo, et en utilisant les codes Unicode des caractères plutôt que de simples rangs alphabétiques. On peut ainsi chiffrer n'importe quel caractère !

Je me suis amusé à déchiffrer le cryptogramme proposé par Mathieutrccc dans le topic d'en-tête, uniquement avec quelques fonctions Excel (sans programmer en VBA) et voici ce que j'obtiens :

(EDIT : moi non plus je ne peux pas proposer mon texte, j'obtiens un message "No spam please". Il doit y avoir des mots-clefs qui sont refusés. Voici donc mon résultat en image)
déchiffrement

Amicalement

Dernière modification par LeSingeMalicieux (04-11-2021 22:02:19)

Hors ligne

#7 04-11-2021 22:06:46

LeSingeMalicieux
Membre
Inscription : 18-01-2015
Messages : 84

Re : Codage et Decodage par une fonction mathématique simple python

Rossignol a écrit :

Il faut faire les remplacements  +, --> o  et "E --> s pour obtenir le texte clair.

Bien entendu je confirme :
déchiffrement

Il me reste juste le caractère "ઽ" dans la première phrase.

Hors ligne

#8 04-11-2021 22:12:03

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Codage et Decodage par une fonction mathématique simple python

B'soir

(EDIT : moi non plus je ne peux pas proposer mon texte, j'obtiens un message "No spam please". Il doit y avoir des mots-clefs qui sont refusés)

Tpout à fait...
Il fut un temps pas si lointain, le forum était spammé à répétition par des messages en anglais pour des médicaments...
C'est la seule façon qu'on ait trouvé de tarir le flot...
Sont rayés des cadres plus de 300 mots (surtout de liaison) standards de l'anglais : ça se devait d'être très pénible pour un spammeur (son bot n'étant pas prévu pour ça, il aurait dû faire l'analyse à la main... et il autre chose à faire : il n'insiste plus) parce qu'il doit perdre un temps fou pour repérer une dizaine de mots dans son texte qui bloquent la validation et les remplacer : ce qui n'est pas évident, je le sais bien : c'est moi qui les ai choisis !
Alors, oui, c'est aussi pénible pour le forumeur lambda.

@+
Je peux demander à Fred de mettre temporairement (24 h) l'anti-spam en sommeil et le réactiver


Arx Tarpeia Capitoli proxima...

Hors ligne

#9 04-11-2021 22:35:49

LeSingeMalicieux
Membre
Inscription : 18-01-2015
Messages : 84

Re : Codage et Decodage par une fonction mathématique simple python

Salut yoshi,

Merci pour les explications !
Pas de souci, comme tu le vois on peut s'en sortir avec des images. L'important est de protéger le forum et que vous ne passiez pas des heures à supprimer des spams à la main.

À+

Hors ligne

#10 05-11-2021 14:14:39

mathieutrccc
Invité

Re : Codage et Decodage par une fonction mathématique simple python

Re!

J'ai lu tout vos messages, merci beaucoup ça m'a bien aidé, il me reste une dernière question avant de boucler ce micro programme, c'est pourquoi il y a 2 caractères qui bloquent le décodage, je n'arrive pas trop à comprendre, l'énoncé doit être mauvaise surement mais je ne voit pas comment il traduit par un double caractère...

Sinon, je vous souhaite une agréable journée

#11 05-11-2021 19:50:33

LeSingeMalicieux
Membre
Inscription : 18-01-2015
Messages : 84

Re : Codage et Decodage par une fonction mathématique simple python

Salut,
Pour les deux caractères qui bloquent, je pense que c'est dû à un problème de formatage ou de réécriture des caractères du message chiffré.
En effet, dans le message chiffré on trouve la suite de deux caractères "ij" pour chiffrer la lettre "o" du clair alors qu'on devrait trouver cet unique caractère "ij" (oui oui tu peux copier/coller, il s'agit bien d'un seul caractère).
De même, la lettre "s" du clair est ici chiffrée par la suite de deux caractères "L·" alors qu'elle devrait l'être par l'unique caractère "Ŀ".

Hors ligne

Réponse rapide

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)?
quatre-vingt dix-sept moins cinquante quatre
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.

Pied de page des forums