IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Programme decryptage Cesar


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut Programme decryptage Cesar
    Bonjour,
    je débute en programmation, et je dois faire un devoir où l'on me demande de dechiffer un message avec A qui devient N , B qui devient O etc ...
    Donc le decryptage type Cesar
    Et donc j'ai essayé de faire un programme et donc voilà ce que ça a donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    tc = input('Texte à déchiffrer :')
    tc = str(tc)
    décalage = input('décalage:')
    décalage = int(décalage)
     
    def dechiffrer(tc,décalage):
     
        texte_chiffré = ''
        for c in chiffré :
            somme = alphabet.find(c) - décalage 
            module = int(somme) % len(alphabet)
            texte_chiffre = texte_chiffre + str(alphabet[module])
     
        return texte_chiffre
     
     
    def valeurs():
        tc = input('Texte à déchiffrer :')
        tc = str(tc)
        décalage = input('décalage:')
        décalage = int(décalage)
        print(tc)
        print(décalage)

    Le probleme que j'ai c'est que il ne me renvoit pas de texte déchiffré, et j'ai essaye d'executer seul une fonction et cela me met un message comme quoi mon code est incomplet

    Merci d'avance

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Mulgus Voir le message
    A qui devient N , B qui devient O etc ...
    avec un décalage/une clé de 13, c'est une variante spéciale du chiffre de César, ça s'appelle ROT13, la même fonction sert aussi bien à chiffrer qu'à déchiffrer

    pour commencer je suis pas certain qu'utiliser des variables avec des accents soit une très bonne idée
    ligne 10, à quoi correspond chiffré ?
    par ailleurs tu n'appelles tes fonctions nulle part, en l'état ton code ne fait rien de plus que demander à l'utilisateur d'entrer un texte et un décalage

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Pour te repondre à quoi correspond chiffré de la ligne 10, je ne sais pas vraiment, je me suis aidé d'internet, apres je pourrai aussi simplifier la ligne12 en mettant directement % 26

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Citation Envoyé par Mulgus Voir le message
    Pour te repondre à quoi correspond chiffré de la ligne 10, je ne sais pas vraiment, je me suis aidé d'internet, apres je pourrai aussi simplifier la ligne12 en mettant directement % 26
    Si c'est pour recopier des choses qu'on ne comprend pas, autant ne rien faire.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Ben écoute, je n'y arrive pas, donc je cherche tant bien que mal sur internet, d'autant plus que ton message ne m'avance pas à grand chose, il serait plus gentil de ta part de m'aider au lieu de me dire ça car si je viens sur ce forum c'est justement pour trouver de l'aide, pour comprendre.

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Mulgus Voir le message
    Ben écoute, je n'y arrive pas, donc je cherche tant bien que mal sur internet
    ouai mais là quand même... un code d'à peine 20 lignes, tu sais pas à quoi sert chacune de tes variables, même avec la meilleure volonté du monde on ne va pas pouvoir réfléchir à ta place :/

    d'autant plus que ton message ne m'avance pas à grand chose, il serait plus gentil de ta part de m'aider au lieu de me dire ça car si je viens sur ce forum c'est justement pour trouver de l'aide, pour comprendre.
    c'est peut-être que tu n'en fais pas un bon usage, perso je trouve que c'est un vrai bon conseil, essaye de passer outre ta susceptibilité et d'en tirer quelque chose d'utile ?

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Je n'ai pas dis que je ne comprenais rien à tout le code, seulement il y a un probleme dans ce code et je n'arrive pas à comprendre pourquoi avec la fonction dechiffrer ligne 7, je n'arrive pas decrypter de message

  8. #8
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    ben en l'occurrence comme je te disais tu as une variable chiffré dont on ne sait pas (on se doute, mais toi manifestement tu sembles ne pas savoir) d'où elle sort ni ce à quoi elle correspond

    pour qu'on puisse t'aider un minimum donne nous un code qui tourne, là ton code ne fait rien en l'état

  9. #9
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    J'ai fait un petit script qui fonctionne, en partant de ton programme initial, car cela m'intéressait.
    J'attends un peu de bonne volonté de ta part pour te le donner sinon, je pense que ce sera contre-productif.
    Tiens compte des remarques de Bufferbob : variables avec accent, ...
    A quoi sert ta fonction "valeurs" ?
    As-tu compris ce qu'est une fonction ?
    As-tu compris ce que fait la méthode ".find" ?
    Use et abuse des "print", particulièrement à l'intérieur des boucles.
    Il y a ici plein de personnes prêtes à t'aider mais pas à bosser à ta place.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Bonjour
    Donc j'ai essaye de bidouiller quelques trucs et du coup j'ai essayé de le faire sans la fonction, car je n'y arrive pas encore.Du coup j'obtiens ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    texte_chiffre = input('Texte à dechiffrer :')
    alphabet ='abcdefghijklmnopqrstuvwxyz'
    alphabet = str(alphabet)
    decalage = input('décalage :')
    decalage = int(decalage)
     
    for c in texte_chiffre :
        somme = alphabet.find(c) - decalage
        print(somme)
        texte_chiffre = texte_chiffre + str(alphabet[somme])
        print(texte_chiffre)

    Le seul soucis avec ça c'est que quand je rentre le texte à dechiffrer par exemple : znguf , je mets un décalage de 13 et j'obtiens zngufmaths donc je trouve bien maths mais le probleme c'est que je garde toujours znguf, donc le texte chiffré de départ.
    Autre chose, j'ai compris ce que faisait "module" mais je n'en vois pas l'interet vu que "somme" fait tout aussi bien la manip car j'ai essayé de remplacer str(alphabet[module]) par str(alphabet[somme]) et ça fait tout aussi bien le travail.

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 718
    Par défaut
    Citation Envoyé par Mulgus Voir le message
    Le seul soucis avec ça c'est que quand je rentre le texte à dechiffrer par exemple : znguf , je mets un décalage de 13 et j'obtiens zngufmaths donc je trouve bien maths mais le probleme c'est que je garde toujours znguf, donc le texte chiffré de départ.
    Si vous ajoutez les caractères déchiffrés à "texte_chiffre", à la sortie, vous aurez bien le texte déchiffré ajouté au texte de départ...


    Citation Envoyé par Mulgus Voir le message
    Autre chose, j'ai compris ce que faisait "module" mais je n'en vois pas l'interet vu que "somme" fait tout aussi bien la manip car j'ai essayé de remplacer str(alphabet[module]) par str(alphabet[somme]) et ça fait tout aussi bien le travail.
    Parce que "somme" reste dans l'intervalle [-26..25].
    Essayez d'encoder, çà sera moins simple.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    tu pourrais mettre ton code entre les balises [code][/code] stp, dans l'interface de rédaction c'est le bouton #

    Citation Envoyé par Mulgus Voir le message
    Autre chose, j'ai compris ce que faisait "module" mais je n'en vois pas l'interet vu que "somme" fait tout aussi bien la manip car j'ai essayé de remplacer str(alphabet[module]) par str(alphabet[somme]) et ça fait tout aussi bien le travail.
    imaginons que tu as un x à chiffrer avec un décalage de 5, ça se passe comment ?

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    D'accord mais du coup quand je change pour mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_chiffre = texte_chiffre - str(alphabet[module])
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_chiffre = texte_chiffre + str(alphabet[module])
    Et bien, j'ai une erreur : TypeError: unsupported operand type(s) for -: 'str' and 'str'

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 718
    Par défaut
    Citation Envoyé par Mulgus Voir le message
    D'accord mais du coup quand je change pour mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_chiffre = texte_chiffre - str(alphabet[module])
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_chiffre = texte_chiffre + str(alphabet[module])
    Et bien, j'ai une erreur : TypeError: unsupported operand type(s) for -: 'str' and 'str'
    Ben, ouais autant çà traduit '+' par "concaténer" autant çà ne sait trop que faire d'un '-'.
    Pourquoi modifier "texte_chiffre" plutôt que récupérer le texte déchiffré dans une autre "variable" ?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Je comprends pas comment je dois faire car si je remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_chiffre = texte_chiffre - str(alphabet[module])
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_dechiffre = texte_chiffre - str(alphabet[module])
    En rentrant comme texte znguf , j'obtient zngufs

    j'ai aussi essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_chiffre = str(alphabet[module])
    sauf que cette fois ci j'obtient le mots mais un retour à la ligne à chaque caractere :
    m
    a
    t
    h
    s

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 718
    Par défaut
    Salut,

    Si vous ne comprenez pas trop ce que sont les chaînes de caractères Python et ce que vous pouvez faire avec, il faut prendre le temps de relire vos notes de cours ou de parcourir le chapitre correspondant d'un bon tuto. comme le Swinnen ici par exemple.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #17
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Voilà j'ai reussi à ce qu'il n'y ai pas de retour à la ligne mais j'ai encore un problème, c'est que je n'ai aucun espace entre les mots mais des m à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    texte_chiffre = input('Texte à dechiffrer :')
    alphabet ='abcdefghijklmnopqrstuvwxyz'
    alphabet = str(alphabet)
    decalage = input('décalage :')
    decalage = int(decalage)
     
    for c in texte_chiffre :
        somme = alphabet.find(c) - decalage 
        module = int(somme) % 26
        texte_chiffre = str(alphabet[module])
        print(texte_chiffre, end='')

  18. #18
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    texte_chiffre = input('Texte à dechiffrer :')
    alphabet ='abcdefghijklmnopqrstuvwxyz'
    alphabet = str(alphabet)
    decalage = input('décalage :')
    decalage = int(decalage)
    
    for c in texte_chiffre :
        if c in alphabet:
            somme = alphabet.find(c) - decalage 
            module = int(somme) % 26
            texte_chiffre = str(alphabet[module])
        else:
            texte_chiffre = c
        print(texte_chiffre, end='')

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Merci beaucoup mais admettons que j'aurai voulu la mettre sous une fonction comment j'aurai fais ?

  20. #20
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Essaie de comprendre tout cela (code de BufferBob inclus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    print("alphabet.find('k') : ",alphabet.find('k'),'\n')
     
     
    def dechiffrer(tc,decalage):
        texte_chiffre = ''
        print('décalage : ',decalage,'\n')
        for c in tc :
            somme = alphabet.find(c) - decalage
            print('somme : ',somme,'\n')
            module = int(somme) % len(alphabet)
            print('module : ',module,'\n')
            texte_chiffre = texte_chiffre + str(alphabet[module])
            print('texte_chiffre : ',texte_chiffre,'\n')
        return texte_chiffre
     
     
    #tc = input('Texte à déchiffrer : ')
    #decalage = int(input('décalage : '))
    print(dechiffrer('abcdefghijklmnopqrstuvwxyz',3))
     
    texte_chiffre = input('Texte à dechiffrer : ')
    alphabet ='abcdefghijklmnopqrstuvwxyz'
    alphabet = str(alphabet)
    decalage = input('décalage :')
    decalage = int(decalage)
     
    for c in texte_chiffre :
        if c in alphabet:
            somme = alphabet.find(c) - decalage 
            module = int(somme) % 26
            texte_chiffre = str(alphabet[module])
        else:
            texte_chiffre = c
        print(texte_chiffre, end='')
    [edit] Tu peux aussi décommenter les lignes 18, 19 et modifier la ligne 20.

Discussions similaires

  1. Aide avec mon programme decryptage MD5
    Par hacker59 dans le forum VB.NET
    Réponses: 0
    Dernier message: 19/05/2013, 20h20
  2. Cryptage/Decryptage et Chiffre de Cesar ?
    Par Invité dans le forum Débuter
    Réponses: 1
    Dernier message: 28/11/2012, 07h35
  3. Programme cryptage decryptage RSA
    Par picka69 dans le forum Scilab
    Réponses: 0
    Dernier message: 18/04/2011, 23h22
  4. programme code cesar amélioré.
    Par m-laure dans le forum C
    Réponses: 4
    Dernier message: 01/04/2007, 15h45
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo