Cryptographie en Ruby

Bonsoir à tous.

J'ai décidé de créer un algorithme qui me permettra de rapidement déchiffrer des messages cryptés par la méthode de César (décalage des lettres modulo 26). Pour cela, j'ai décidé de procéder de la manière suivante : je créé un hache qui associe chaque lettre de l'alphabet à son rang - 1, c'est à dire a=0,b=1, etc.., puis une fonction qui à un texte que j'aimerais de longueur arbitraire associe le même texte dont toutes les lettres on été décalées de 1.
J'ai plusieurs questions : est ce que cela vous semble être une bonne approche? comment travailler modulo 26? C'est à dire comment faire comprendre à Ruby que le z va devenir un a?

Merci d'avance.

Réponses

  • J'ai changé mon approche, j'ai vu sur Wikiversité que l'on pouvait parcourir une chaîne de caractères, et comment faire pour que la fonction demande du texte de longueur arbitraire. Maintenant, il ne me reste plus qu'à trouver comment utiliser la méthode each de manière à ce que chaque caractère soit remplacé par le suivant dans l'alphabet.
  • Pourquoi ne pas travailler avec la valeur ASCII de chaque caractère alphabétique ?
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Bonsoir, merci pour ce conseil, c'est réussi! :
    def cesar()
    
      texte = gets
      tab = []
      texte.each_byte do |c|
        tab << c
      end
      
      size = tab.size
      
      for n in (0..size-1)
        if tab[n]<122
          tab[n] = tab[n]+1
        else 
          tab[n] = 97
        end 
      end
        
      for n in (0..size-1)
       print tab[n].chr
      end
          
    end
    
    
Connectez-vous ou Inscrivez-vous pour répondre.