Pensez à lire la Charte avant de poster !

$\newcommand{\K}{\mathbf K}$


Les-Mathematiques.net - Cours de mathématiques supérieures
 Les-Mathematiques.net - Cours de mathématiques universitaires - Forum - Cours à télécharger

A lire
Deug/Prépa
Licence
Agrégation
A télécharger
Télécharger
106 personne(s) sur le site en ce moment
E. Cartan
A lire
Articles
Math/Infos
Récréation
A télécharger
Télécharger
Théorème de Cantor-Bernstein
Théo. Sylow
Théo. Ascoli
Théo. Baire
Loi forte grd nbre
Nains magiques
 
 
 
 
 

Cryptographie en Ruby

Envoyé par Toborockeur 
Cryptographie en Ruby
l’an passé
avatar
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.
Re: Cryptographie en Ruby
l’an passé
avatar
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.
Re: Cryptographie en Ruby
l’an passé
avatar
Pourquoi ne pas travailler avec la valeur ASCII de chaque caractère alphabétique ?

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Cryptographie en Ruby
l’an passé
avatar
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



Edité 1 fois. La derni&egrave;re correction date de l&rsquo;an pass&eacute; et a &eacute;t&eacute; effectu&eacute;e par Toborockeur.
Re: Cryptographie en Ruby
l’an passé
[gist.github.com]

f(n) = 2 + (2(n!) mod(n + 1)) où f(n) = n + 1 si n + 1 est dans P et f(n) = 2 sinon
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquer ici pour vous connecter

Liste des forums - Statistiques du forum

Total
Discussions: 134 853, Messages: 1 299 774, Utilisateurs: 23 486.
Notre dernier utilisateur inscrit fb-56.


Ce forum
Discussions: 2 232, Messages: 16 541.

 

 
©Emmanuel Vieillard Baron 01-01-2001
Adresse Mail:

Inscription
Désinscription

Actuellement 16057 abonnés
Qu'est-ce que c'est ?
Taper le mot à rechercher

Mode d'emploi
En vrac

Faites connaître Les-Mathematiques.net à un ami
Curiosités
Participer
Latex et autres....
Collaborateurs
Forum

Nous contacter

Le vote Linux

WWW IMS
Cut the knot
Mac Tutor History...
Number, constant,...
Plouffe's inverter
The Prime page