IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Difficultés pour le décryptage d'un texte simple.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 4
    Par défaut Difficultés pour le décryptage d'un texte simple.
    Bonjour à tous, j'ai reçu un exercice sur lequel je continue de bloquer après de nombreux essais, étant un débutant dans l'utilisation de python.
    Voici l'énoncé:

    Écrivez un programme en Python qui crypte un message, entré au clavier par l'utilisateur, puis le stocke dans un fichier txt. On se limitera à des caractères majuscules, sans accents ni ponctuation.
    L'utilisateur pourra choisir la clé de cryptage, c'est à dire le nombre de caractères aléatoires à insérer entre deux lettres du message.
    Écrivez un autre programme capable de lire le message codé du fichier txt et d'en extraire le message en clair, connaissant la clé.

    Ayant réussi à écrire le programme cryptage, il me reste le décryptage. Je dois faire un programme simple, utilisant l'instruction 'for' si possible et ne dépassant pas les 10 lignes. Je précise que j'utilise python 3.3.2. Pourriez-vous me guider ? Demandez-moi si vous souhaitez des précisions, merci.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pour t'aider dans le décryptage, il serait bien que l'on voie le cryptage.

    Montre nous ton code de départ, ça simplifiera les choses.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 4
    Par défaut
    import random

    def lettre():
    carac = random.randint (65,90)
    resultat = chr(carac)
    return resultat

    def message(clé):
    resultat = ""
    for i in range (0,clé):
    resultat = resultat + lettre()
    return resultat


    texte = input("Veuillez écrire votre texte à crypter en majuscule (sans accents ni ponctuation). ")
    clé = int(input("Veuillez entrer la clé de cryptage (cela doit être un nombre entier) " ))
    fichierSource = open("MonMessageCrypté.txt","w")

    fichierSource.write(texte)

    for i in range(0,len(texte)):
    print(texte[i], end = message(clé))
    fichierSource.close()

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Le texte que tu enregistre n'est pas encore crypté dans ton code, je suppose que ce doit être le cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    c = ""
    for i in range(0,len(texte)):
        c = c + texte[i] + message(clé)
    fichierSource.write(c)
    fichierSource.close()
    Pour le décoder, il te suffit donc de prendre les lettres du message codé une par une mais en sautant à chaque fois les lettres ajoutées.

    Avec range(début, fin, saut) tu peux donner une valeur de saut.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> for i in range(0, 10, 3):
    ...     print i,
    ... 
    0 3 6 9
    Tu peux le faire en deux lignes de code.

    Si tu postes du code mets-le entre balises. Le # dans la barre d'outil.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 4
    Par défaut
    oui mais le problème c'est que je ne connais pas la longueur du message texte que va écrire la personne, et c'est moi qui doit lui redemander la clé, le pas donc, ce qui fait que je ne peux pas metre seulement (0,10,3) et c'est pour cette raison que je bloque :/ en gros je dois avoir ca:
    for i in range (0, longueur du message codé, clé de codage)

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Dans mon exemple range(0, 10, 3) 10 représente la longueur du message crypté et 3 représente la valeur de la clé + 1.

    La longueur du message crypté, tu sais comment la connaître puisque tu as écrit dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i in range(0,len(texte)):
    Essaye, tu verras que c'est simple.

Discussions similaires

  1. Difficulté pour batir une requête simple
    Par pierre50 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 18/11/2013, 11h08
  2. Difficulté pour une requête a priori simple
    Par Evocatii dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/08/2011, 21h19
  3. Réponses: 7
    Dernier message: 13/12/2003, 14h09
  4. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  5. Difficultés pour afficher un pixel à l'écran
    Par Bubonik software dans le forum C
    Réponses: 9
    Dernier message: 17/08/2003, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo