Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cryptographie

ROT13

Sujet résolu
    5 août 2011 à 14:41:06

    Bonjour, je travaille en ce moment sur un logiciel très simple de cryptage en ROT13. Il s’agit d’un décalage de 13 lettres. (Pour plus d'information -> ROT13 - Wikipédia )

    Exemple de cryptage en ROT13 :
    - non chiffré : Bonjour
    - chiffré : obawbhe

    J'ai commencé à programmer un petit logiciel en python mais je suis bloqué.

    Voici mon code :

    from string import maketrans
    nocript = "abcd"
    cript = "nopq"
    conversion = maketrans(nocript, cript)
    


    J'ai essayer de mettre une fonction input mais sa ne marche pas :(

    Je sais que dans la fonction input il faut préciser que l'on utilise :

    conversion = maketrans(nocript, cript)
    


    Mais je n'est aucune idée de comment il faut faire :euh:

    Je remercie d'avance ce qui m’aideront
    • Partager sur Facebook
    • Partager sur Twitter
      5 août 2011 à 15:58:18

      Salut.

      Pour quelque-chose d'aussi simple que le rot13, tu n'as pas besoin d'utiliser une table de traduction ; ça peut très bien se coder directement :

      >>> alph = "abcdefghijklmnopqrstuvwxyz"
      >>> rot13 = lambda ch : ''.join([alph[alph.index(c) - 13] if c in alph else c for c in ch])
      >>> rot13("salut")
      'fnyhg'
      >>> rot13(rot13("salut"))
      'salut'
      
      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        5 août 2011 à 16:34:06

        Ok, mais je suis encore débutant et j'ai du mal à comprendre ce code mais je fait surtout cela en guise d'entrainement donc j'aimerais continuer avec mon code de départ (sans vouloir te contrarier)
        • Partager sur Facebook
        • Partager sur Twitter
          5 août 2011 à 16:44:42

          Comme tu veux, mais ça t'apprendrait plus de choses de coder rot13 toi-même :

          >>> from string import maketrans
          >>> rot13 = maketrans("abcdefghijklmnopqrstuvwxyz", "nopqrstuvwxyzabcdefghijklm")
          >>> "salut".translate(rot13)
          'fnyhg'
          >>> "salut".translate(rot13).translate(rot13)
          'salut'
          


          Je t'ai juste montré un one-liner qui faisait la même chose pour te faire voir que c'était possible (et relativement simple) à coder, pas pour que tu cherches absolument à décoder le one-liner. Il faut aussi chercher un peu…
          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
            5 août 2011 à 17:12:21

            Je sais je suis énervant mais ... Je bug pas pour sa, c'est pour après quand je dois taper le texte à crypté. :euh:
            je crois qu'il faut utiliser input mais je n'ai aucune idée de comment faire

            Voici mon code pour l'instant :

            from string import maketrans
            nocrypt = "abcdefghijklmnopqrstuvwxyz"
            crypt = "nopqrstuvwxyzabcdefghijklm"
            conversion = maketrans(nocrypt, crypt)
            
            a_crypte = input().translate(conversion)
            


            J'ai essayer comme sa mais sa ne marche pas :( , ses la dernière ligne qu'il faudrait changer.
            • Partager sur Facebook
            • Partager sur Twitter
              5 août 2011 à 17:17:56

              Tu te rends compte que tu nous as montré pratiquement tout ton code SAUF la ligne qui plantait dans ton premier post ? :-°

              À vue de nez tu utilises Python 2, remplace input par raw_input et c'est plié.

              Si le problème ne vient pas de là, peut-être que si tu nous filais l'erreur qui s'affiche on pourrait mieux t'aider.
              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !
                5 août 2011 à 17:24:14

                Merci beaucoup pour ton aide sa marche enfin ^^

                Sinon pour les personnes que sa intéresse voici le code :

                from string import maketrans
                nocrypt = "abcdefghijklmnopqrstuvwxyz"
                crypt = "nopqrstuvwxyzabcdefghijklm"
                conversion = maketrans(nocrypt, crypt)
                
                a_crypte = raw_input().translate(conversion)
                print a_crypte
                
                • Partager sur Facebook
                • Partager sur Twitter

                Cryptographie

                × 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