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

Résolu
gentiane2016 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
gentiane2016 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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".
A voir également:

1 réponse

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Comment tu distingues ce qui est déjà crypté et ce qui reste à crypter ?
0
gentiane2016 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Merci.
0