Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme cryptage vigenere

    11 mai 2015 à 9:15:36

    Salut!
    J'ai un algorithme pour crypter avec la méthode de vigenère, mais il y a un petit soucis, il ne code pas correctement...
    Je ne trouve pas le problème,  help plz
    def CarreVigenere () :
        """creation du carre de Vigenere"""
        al = "abcdefghijklmnopqrstuvwxyz"
        al = al.upper () #mise en majuscules
        carre = []
        #pour chaque lettre de l'alphabet
        for i in range (0,26) :
            carre.append(al) #on ajoute l'alphabet a carré
            al = al [1:26] + al [0] #on deplace le premier caractere à la fin dans l'alphabet
        return carre #on retourne le carre
    
    
    def CodeVigenere (message, cle, carre) :
        """code un message selon le code de Vigenere,
        message est le message a coder
        cle est la cle
        carre est le carre de Vigenere"""
        alphabet = carre [0] # contient l’alphabet (premiere ligne du carre)
        resultat = "" # contiendra le message code
        # on parcourt le message
        for i in range (0, len (message)) :
        # j est la position de la lettre dans le cle
        # associee a la lettre i dans le message
        # % retourne le reste d’une division entiere
            j = i % len (cle) 
            a = alphabet.find (message [i]) # numero de la lettre message [i]
            b = alphabet.find (cle [j]) # numero de la lettre cle [j]
            c = carre [b][a]
            resultat += c
        return resultat
    
    
    def DecodeVigenere (message, cle, carre) :
        """decode un message selon le code de Vigenere,
        message est le message a decoder
        cle est la cle
        carre est le carre de Vigenere"""
        alphabet = carre [0] # contient l’alphabet (premiere ligne du carre)
        resultat = "" # contiendra le message code
        # on parcourt le message
        for i in range (0, len (message)) :
        # j est la position de la lettre dans le cle
        # associee a la lettre i dans le message
        # % retourne le reste d’une division entiere
            j = i % len (cle)
            b = alphabet.find (cle [j]) # numero de la lettre cle [j]
            a = carre [b].find (message [i]) # numero de la lettre message [i]
            # dans la ligne du carre correspondant
            # au decalage introduit par cle [j]
            c = carre [0][a]
            resultat += c
        return resultat
    
    
    message = input("Entrez le message à crypter")
    message = message.replace (" ", "")
    message = message.upper ()
    cle = input("Entrez la clé")
    carre = CarreVigenere ()
    code = CodeVigenere(message, cle, carre)
    decode = DecodeVigenere (code, cle, carre)
    print ("------------------ cle")
    print (cle)
    print ("------------------ message")
    print (message)
    print ("------------------ message code")
    print (code)
    print ("------------------ message decode")
    print (decode)
    print ("------------------")
    if decode == message : print ("message bien retranscrit")
    else : print ("message mal retranscrit")
    #############################################################################
    #############################################################################
    #############################################################################
    print ("")
    print 
    
    
    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 mai 2015 à 10:15:18

      Débrouilles-toi avec l'auteur !

      Mais effectivement il se complique la vie... Un vigenère digne de ce nom est facile à trouver !

      • Partager sur Facebook
      • Partager sur Twitter
        11 mai 2015 à 17:21:30

        J'ai cherché longtemps et je n'ai pas trouvé, c'est pour ça que j'ai besoin de votre aide en fait, je suis tout juste assez compétant pour comprendre le code donc ça me pose problème :/
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          11 mai 2015 à 18:25:02

          Quel code ne comprends-tu pas ? Le code que je met en lien, ou celui du 1er post ?

          Parce-que si c'est celui du 1er post, alors tout ce que je ferais, sera de raconter un tutoriel python...

          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2015 à 8:45:25

            Excuse moi je ne pouvais pas répondre...
            En fait mes capacités en Python sont limitées, je suis en Term S spé ISN.
            Je comprend la globalité des codes, je vois grosso-modo comment ils fonctionnent mais je ne saurais pas les réécrire moi même et je ne veut pas débarquer le jour de l'épreuve sans avoir comprit l'intégralité du code.

            PS : Le code en lien ne code pas correctement, si on met "oui" en texte et "non" en cle, on obtient "HOB" au lieux de "BIV"...

            -
            Edité par VictorLedoux 18 mai 2015 à 9:15:27

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              18 mai 2015 à 9:15:42

              Oui d'accord, mais pour réécrire un code, ça vient pas du saint esprit, il faut bien que tu te documentes, que tu fasses des tests sur ton interpréteur en t'aidant d'un tutoriel, je ne vois pas où on peut t'aider plus, sinon le faire à ta place, qui entre parenthèses, ne te rendrait pas service !

              Pour le code faut rester cohérent, on a le résultat en majuscule, il faut donc donner les paramètres de la fonction avec des majuscules

              -
              Edité par Anonyme 18 mai 2015 à 9:44:49

              • Partager sur Facebook
              • Partager sur Twitter
                18 mai 2015 à 9:49:50

                Oui je comprend biens, mais j'y arrive pas et je suis pris par le temps :/

                Je vais continuer à me documenter; tu as vu mon PS?
                Merci quand même !

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  18 mai 2015 à 9:59:54

                  tu as vu mon PS?

                  Oui j'ai édité mon post précédent pour te répondre

                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 mai 2015 à 10:05:04

                    J'aurais du faire attention à ça ^^
                    Merci beaucoup pour ton code, il nous aide beaucoup, on va taffer dessus pour bien comprendre :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Algorithme cryptage vigenere

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown