Crypter (ou chiffrer) un message avec une clé secrète

Résolu/Fermé
gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016 - Modifié par Chris 94 le 27/02/2016 à 14:14
gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016 - 29 févr. 2016 à 11:53
Bonjour, quelqu'un peut-il m'aider à finaliser mon programme (je l'ai simplifié pour qu'il soit plus facile à lire car en réalité character_set et secret_key ont chacun environ 60 caractères). Le message se crypte bien, mais au prochain passage de la boucle "for", le message crypté ne conserve pas la précédente lettre cryptée et reprend la lettre d'origine. J'ai cherché la solution de différentes façons mais je n'y arrive pas, en espérant que quelqu'un sur le forum saura le faire... Merci par avance.

character_set = "abcde"
secret_key    = "FGHJK"
 
def ma_fonction(message_clair):
    if len(character_set)==len(secret_key):
        message_crypte= ""
        for i in range(0, len(character_set)):
            
            message_crypte=message_clair.replace(character_set[i],secret_key[i])
            
        return message_crypte

message_clair="acdb"          #pour verification
print (ma_fonction(message_clair))


#Le message crypté devient successivement "Fcdb","acdG","aHdb","acJb","acdb".

1 réponse

Utilisateur anonyme
27 févr. 2016 à 15:19
Salut,

Ta fonction renvoie un message_crypté. Il faut le stocker dans une variable (ou le remplacer par le message_clair si tu veux) pour récupérer le message crypté. Ici, il n'est pas stocké
0
gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016
27 févr. 2016 à 17:40
Merci, Help-Jason. J'abandonne car, bien que je comprenne la cause du problème, je ne sais pas comment stocker le message au fur et à mesure qu'il est crypté. J'ai essayé d'insérer à la ligne 10 "message_clair=message_crypte". Cela a marché pour de petits groupes de lettres, mais il y a confusion entre ce qui est déjà crypté et ce qui reste à crypter. Je ne parviens pas à indiquer au programme ce que je veux qu'il fasse.
0
Utilisateur anonyme > gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016
28 févr. 2016 à 19:01
Comment tu distingues ce qui est déjà crypté et ce qui reste à crypter ?
0
gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016
28 févr. 2016 à 21:37
En fait, la démarche dès le début n'est pas bonne car ce que je fais est une boucle qui repasse continuellement par le message à crypter. Ce qu'il faudrait, c'est prendre chaque lettre du message à crypter (ici, c'est le "a"), la remplacer par la lettre correspondante (ici, c'est le "F"), passer à la suivante (ici, c'est le "c"), la remplacer par la lettre correspondante (ici c'est le "H")...
A ce stade, on aurait FHdb au lieu de acdb.
En continuant, on obtiendrait d'abord FHJb, et finalement FHJG (qui est le message crypté final).
Mais mettre cette démarche en langage Python, cela je ne sais pas le faire.
0
Utilisateur anonyme > gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016
Modifié par Help-Jason le 29/02/2016 à 08:33
Salut, j'ai compris ! Il faut que ton message crypté ne contiennent que des majuscules ? Il faut alors tester chaque lettre de ton mot avant de les crypter :
if(character_set[i] in string.lowercase) #...
0
gentiane2016 Messages postés 8 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 29 février 2016
29 févr. 2016 à 11:53
Merci.
0