Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante dix-sept plus cinq
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

yoshi
06-05-2013 08:37:32

Bonjour,

T'adresser à Lutcho, comme ça, t'as de l'espoir...
Voilà plus de 3 ans qu'il n'est pas passé sur le forum...
La réponse à ta question réside en la bonne compréhension de ce qu'est le code de Cesar :
simplement un décalage du même nombre de lettres du texte clair.

Il est donc équivalent de dire que l'on fait correspondre A à C :

A   B   C   D   E    F    G   H   I...
C   D   E   F   G    H    I   J   K...

ou que l'on décale de 2.
Informatiquement, là il se sert des codes ASCII : pour simplifier, lorsque tu appuies sur une touche de ton clavier, ce n'est pas une lettre mais un nombre qui est renvoyé à ton ordinateur, qui lui, transforme le nombre en lettre..
A --> 65, B --> 66, C --> 67,..., Z --> 90.
Code(C)-code(A)=2.
Pour coder YOSHI avec la clef de Lutcho :
Je fais :
code(Y)+2, code(O)+2,code(S)+2, code(H)+2,Code(I)+2
89 +2             79+2         83+2         72+2       73+2
  91                  81            85             74          75
Normalement, les codes doivent restés compris entre 65 et 90 inclus.
Comme il y a 26 lettres, on doit donc faire 91 - 26 =  65
Donc YOSHI se code : AQUJK...
Ça te va ?

Pour plus d'infos, voir ici : http://www.bibmath.net/crypto/index.php … cryptcesar

@+

Natiish
05-05-2013 22:14:43

Bonjour Lutcho, pourquoi ta clé est t-elle un chiffre et nom un mot ?

Lutcho74
27-02-2009 16:28:59

Re,

Voilà le script de dé-cryptage :

messagecrypter="DQPLQWT"
cle="2"
cle=int(cle)
longueur=len(messagecrypter)
i=0
alph=""
messageclair=""
for i in range(longueur):
    asc=ord(messagecrypter[i])
    if asc>=65 or asc<=90:
        asc=asc-cle
    messageclair=messageclair+chr(asc)
print messageclair

J'ai regarder tes codes Yoshi mais foulala j'y comprend casiment rien...

Lutcho74
27-02-2009 15:34:49

Bijour,

ça y est j'ai réussi... bon par contre il ne prend pas les accents...

messageacrypter="bonjour"
cle="2"
cle=int(cle)
messageacrypter=messageacrypter.replace(" ","")
longueur=len(messageacrypter)
messageacrypter=messageacrypter.upper()
i=0
alph=""
messagecrypter=""

for i in range(longueur):
    asc=ord(messageacrypter[i])
    if asc>=65 or asc<=90:
        asc=asc+cle
        if asc>91:
            asc=asc-26
        if asc<65:
            asc=asc+26
    messagecrypter=messagecrypter+chr(asc)
print messagecrypter

Bon il n'est pas super mais bon je suis quand même content de moi vue que la dernière fois que j'ai essayer je suis rester casi deux jours a voir comment je pourrais faire et que je ne trouver pas...En faite je pense que le problème dans mon ancien script c'est que je ne mettais pas le message à crypter en majuscule...

Et je compte voir pour le script de décryptage tout de suite et ensuite je verrai pour qu'il soit mieux(qu'il prenne les accents)...


@+

[EDIT] j'avais oublier d'enlever les espaces dans le message à crypter donc j'ai modifier le code et c'est bon...

yoshi
25-02-2009 20:17:59

Bonsoir,

Normal. Ta priorité des priorités, c'est le boulot ! T'as intérêt à redresser la barre, pépère : rien ne sera joué tant que ton Conseil de Classe du 3e trimestre n'aura pas eu lieu. D'ici là avec du boulot et un programme serré de "bouchages des trous, à coeur vaillant, rien d'impossible !

@+

PS : Travail sur PGCD expédié...

Lutcho74
25-02-2009 15:53:04

Salut,

Je ne regarde pas encore tes codes car là je suis en vacances donc une fois que j'aurais finit mais devoirs je vais m'y remettre et je pourrais les comparer avec les tient :-)

@+


[Pour Yoshi:] Pour ton E-mail je l'ais juste survoller et désolé de ne pas t'y répondre mais j'ai pas trop le temps en ce moment (je doit bosser un max pour rattraper mon retard dans des matières) mais dès que j'en ai l'occasion je regarderais mieux ton mail...
[Edit] Quand je parle de l'e-mail c'est pas celui que tu m'a envoyé hier(je viens juste de le voir j'ai un petit bugue avec ma boite mail)

yoshi
24-02-2009 19:08:44

Bonsoir,

Codage selon l'Algorithme de César : décalage monoalphabétique.

#!/usr/bin/env python
# -*- coding: cp1252 -*-

#Cryptage par décalage (algorithme de Cesar)
def prepare(Messageacrypter):
    li1=["âà","éèêë","îï","ô","ûü","ç"]
    li2=["A","E","I","O","U","C"]
    i=0
    # Remplacement des caractères accentués éventuels
    for mot in li1:
       repl=li2[i]
       for lettre in mot:
           Messageacrypter=Messageacrypter.replace(lettre,repl)
       i+=1      
    for lettre in "',-;:!?.":  # Suppression de la ponctuation
        Messageacrypter=Messageacrypter.replace(lettre,"")
    Messageacrypter=Messageacrypter.upper()    # Passage en majuscules
    return Messageacrypter

Messageacrypter="le script pour décoder ne devrait pas être long a faire,  je le donnerai sur ce même forum"
cle=24 # Décalage par rapport à Y (code ASCII : 24 + 1 = 25e lettre de l'alphabet)

acrypter=prepare(Messageacrypter)
lg=len(acrypter)
MessageCrypte=""

for i in range(lg):
    if acrypter[i]==' ':
        MessageCrypte+=' '
    else:
        asc=ord(acrypter[i])+cle
        MessageCrypte+=chr(asc+26*((asc<65)-(asc>90)))

print MessageCrypte

Et voilà pour le décodage :

#!/usr/bin/env python
# -*- coding: cp1252 -*-

#Décryptage par décalage (algorithme de Cesar)
MessageCrypte="JC QAPGNR NMSP BCAMBCP LC BCTPYGR NYQ CRPC JMLE Y DYGPC HC JC BMLLCPYG QSP AC KCKC DMPSK"
lg=len(MessageCrypte)
MessageClair=""
cle=24 # Décalage par rapport à Y (code ASCII : 24 + 1 = 25e lettre de l'alphabet)

for i in range(lg):
    if MessageCrypte[i]==' ':
        MessageClair+=' '
    else:
        asc=ord(MessageCrypte[i])-cle
        MessageClair+=chr(asc+26*((asc<65)-(asc>90)))

print MessageClair

Commentaires, questions bienvenus.

@+

Lutcho74
01-02-2009 13:23:16

Re,
Et bien je préfère que tu le poste comme sa je pourrais voir les différences et voir si je n'ai pas fait d'erreurs ou quoi que se soit qui nuise au programme...

yoshi
01-02-2009 12:21:37

Re,

Quand tu auras fini ton code et qu'il sera fonctionnel, soit je t'expédie le mien soit je le poste ainsi tu pourras voir les différences.
Quelle solution préfères-tu ?

Lutcho74
01-02-2009 11:36:55

Salut,

Ok merci

@+

yoshi
31-01-2009 22:04:46

Re,

messageacrypter=messageacrypter.upper()
Il te manque les parenthèses...

C'est une méthode, une fonction pré-construite que tu appliques à un objet : un peu comme si, en maths,  tu écrivais x.f() au lieu de f(x)

@+

Lutcho74
31-01-2009 20:10:04

Re,
Comment faire pour mettre un string en majuscule?
Quand je fait :
messageacrypter=messageacrypter.upper
print messageacrypter
il me met--> <built-in method upper of str object at 0x013A62F0>
Merci d'avance.

@+

Lutcho74
31-01-2009 18:37:10

Re,

Je vais voir pour faire tout se que tu ma dit se soir mis à par la boucle while je verrai plus tard si j'y arrive mais pour l'instant j'ai pas trop envie de m'embrouillais ^^.

@+

yoshi
31-01-2009 18:11:52

RE,

Rendre le décryptage d'un message crypté via le Code de César impossible à la main ?
Impossible !
Trop simple, il n'y a que 24 décalages possibles, 0 et 26 revenant à ne pas décaler !
De plus si le texte est un peu long, il suffit de chercher quelle est la lettre du message qui a la fréquence la plus élevée, et on saura que c'est un E. A partir de là, selon la longueur du texte, il ne faudra que quelques minutes à quelques heures pour avoir le message en clair...
Si tu ne travailles qu'avec des majuscules, ta variable asc sera telle que 65<= asc <=90. Toute valeur en dehors de cet intervalle devra être corrigée en ajoutant ou retirant 26 et tu n'auras plus de problèmes de "trucs bizarres"
Toute clé supérieure à 26 doit être corrigée modulo 26.
Le seul cryptage reconnu sûr, ai-je lu, est le cryptage via un masque jetable avec une clé de longueur supérieure ou égale à celle du texte et à condition de changer de clé à chaque fois : bien trop lourd donc. Le fin du fin est de prendre la clé en langue étrangère, ce qui va brouiller une fois supplémentaire les fréquences d'apparition des lettres : ce que j'ai fait avec la clé EIJIYOSHIKAWA en japonais

J'ai repris, modifié, optimisé ton code : il marche pour n'importe clé comprise entre -26 et +26.
Si tu veux vraiment imposer des conditions à la clé, alors, il ne faut pas qu'elle vienne de toi.
Tu la demandes dans une boucle while avec cle=int(raw_input("Entrez un nombre entre 1 et 25"))
Puis après, tu utilises le couple try / except... Vois ici : http://lfe.developpez.com/tutoriel/python/node10.php pour permettre ou non la sortie de la boucle selon qie l'entrée est valide ou non.
Un point à signaler raw_input récupère une chaîne de caractères, pas un nombre, il faut donc la convertir d'où le int.
try except c'est pour le cas où un petit malin rentre zut au lieu de 25 et si pas de test de validité, paf, le prg plante et l'autre ricane, content de lui...

@+

Lutcho74
31-01-2009 17:39:25

Salut,

1. Ok sais vrai que je n'y avais pas penser
2.Je les fait comme pour les espace pour toutes les ponctuation mais sa ma fait un beugue donc jles ai enlevé...
3.J'ai mit la clé 28 pour montrer que c'éatait le max que l'on pouvais mettre mais c'est vrai que c'est débile^^.
5.alors en basci panoramic il existe else mais pas elif et j'ai lut des truc sur les conditions dans des tutos donc je connais mais en faite ce code ait un peu un "brouillon" a l'origine il y avait des conditions qu'il n'y a pas la est vice vers sa...
6. la variable prob j'ai oublier de l'enlever mais elle me servait dans une des condition que j'ai enlevé
7.Les condition bizarre pour la clé est quand faite sa me mettait des caractère bizar au dessus d'un clé =15 donc j'ai modifier un peu tout sa pour que sa ne me fasse pas de clé qui soit égale ou supérieur a 15, que si on écrit par exemple 20 et bien sa fasse clé=5 avec la première condition et si on mais 15 sa nous donneras 0 et donc c'est pour sa que j'ai fait la condition d'après don sa sera égale 3 ...

Je vais reprendre mon programme a zéro en prenant en compte tout se que tu m'a dit, et pense tu que sa pourrait être utile de rendre le décryptage a la main impossible; se serai possible en faisant une certaine opération a exécute a la clé qui ne serai pas connue de la personne qui n'a pas le code et donc même si on a la clé sa ne change rien...., je propose sa vue que quand on crypte quelque chose c'est pas fait pour être décrypter par quelqu'un que l'on ne désire pas...quand pense tu?

Pied de page des forums