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 :

Python: besoin d'aide pour un petit programme


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 0
    Points
    0
    Par défaut Python: besoin d'aide pour un petit programme
    3 autres programmes

    1-
    def chiffrer_dechiffrer(nombre, cle):
    """Chiffre (encrypte) ou déchiffre un nombre à l'aide une clé (publique ou privée), en utilisant la méthode RSA. Si
    une clé publique est reçue, le résultat de la fonction sera un nombre chiffré. Si une clé privée est reçue, le
    résultat sera le nombre original. Voir l'énoncé pour connaître les opérations mathématiques à faire ici.

    Args:
    nombre (int): Le nombre à chiffrer ou déchiffrer.
    cle_publique (list): Une liste de deux entiers: le module de chiffement et l'exposant de chiffrement (ou de
    déchiffrement).

    Warning:
    Le nombre ne peut pas être plus grand que le module de chiffrement, sinon l'algorithme RSA ne fonctionnera pas.
    Vous pouvez utiliser l'instruction assert pour vous en assurer, mais lors de la correction nous n'utiliserons
    que des nombres/clés compatibles.

    Returns:
    int: L'entier chiffré ou déchiffré.

    2-

    def chiffrer_fichier(nom_fichier_entree, nom_fichier_sortie, cle_publique):
    """À l'aide d'une clé de chiffrement (clé publique), ouvre un fichier texte, chiffre le contenu,
    puis écrit le résultat (liste de nombres) dans un autre fichier. Notez que cette fonction ne
    retourne rien: son résultat est l'écriture d'un fichier sur le disque.

    Étapes à suivre:
    1. Ouvrir le fichier d'entrée et en lire le contenu.
    2. Convertir le contenu (chaîne) en liste d'entiers, en utilisant la fonction chaine_a_liste_entiers.
    3. Pour chaque entier de cette liste, chiffrer le nombre à l'aide de la clé publique.
    4. Écrire dans le fichier de sortie chacun des nombres. Utilisez une ligne différente pour écrire
    ces nombres.

    Args:
    nom_fichier_entree (str): Le nom du fichier contenant le texte à chiffrer.
    nom_fichier_sortie (str): Le nom du fichier où écrire le résultat du chiffrement.
    cle_publique (list): Une liste de deux nombres: le module de chiffrement et l'exposant de chiffrement.



    3-
    def dechiffrer_fichier(nom_fichier_entree, cle_privee):
    """À l'aide de la clé de déchiffrement (clé privée), déchiffrer le contenu d'un fichier (préalablement chiffré à
    l'aide de la fonction chiffrer_fichier) et retourner la chaîne résultante.

    Étapes à suivre:
    1. Ouvrir le fichier contenant le message codé, et en lire le contenu. Chaque ligne devrait contenir un entier.
    2. Pour chacune de ces lignes (chiffres), déchiffrer le nombre en utilisant la clé privée. Récupérer le
    dans une liste de nombres déchiffrés.
    3. Transformer cette liste en chaîne de caractères, en utilisant la fonction liste_entiers_a_chaine.
    4. Retourner cette chaîne.

    Args:
    nom_fichier_entree (str): Le nom du fichier où lire le message chiffré.
    cle_privee (list): Une liste de deux entiers: le module de chiffrement et l'exposant de déchiffrement.

    Returns:
    str: La chaîne de caractères déchiffrée.



    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonsoir,
    Pas d'aide sans un minimum d'efforts.
    Le forum n'est pas là pour faire vos devoirs.
    Clodion

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 0
    Points
    0
    Par défaut
    cela fait quasiment 5h que j'essayais et ne voyant rien qui fonctionne, je suis venu ici !
    Je peux te montrer ce que j'ai fait mais tu vas me dire que ceci est faux, ceci n'a pas de sens, ceci est un conflit, ...
    veux tu que je te montre quand même

    ??

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 279
    Points : 36 765
    Points
    36 765
    Par défaut
    Salut,

    Citation Envoyé par Intrepid13 Voir le message
    cela fait quasiment 5h que j'essayais et ne voyant rien qui fonctionne, je suis venu ici !
    Je peux te montrer ce que j'ai fait mais tu vas me dire que ceci est faux, ceci n'a pas de sens, ceci est un conflit, ...
    veux tu que je te montre quand même
    Tout l'intérêt de ces exercices est le temps que vous passez à essayer de les résoudre par vous même. Après, si vous pataugez parce que vous n'arrivez pas à réaliser ceci ou cela, il faut poster non seulement le code mais aussi expliquer les difficultés que vous rencontrez.
    Le lecteur qui prendra la peine de vous indiquez quoi retravailler, expliquer les concepts mal assimilés,... sera plus bénéfique que celui qui postera une solution à recopier.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 0
    Points
    0
    Par défaut
    pour le premier
    [code:]
    Nombre=int(input("Le nombre à chiffrer est :"))
    modulo_chiffrement=int(input("Entrez le modulo de chiffrement"))
    exposant_chiffrement=int(input("Entrez l'exposant de (de)-chiffrement"))


    cle_publique = [modulo_chiffrement, exposant_chiffrement]
    if Nombre > modulo_chiffrement:
    print("L'algorithme RSA ne fonctionne pas:")
    else:
    print("L'algorithme RSA fonctionne correctement")
    [\code]


    pour le second
    à venir

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 279
    Points : 36 765
    Points
    36 765
    Par défaut
    Salut,

    L'exercice consiste à fabriquer la fonction chiffrer_dechiffrer(M, clefs).
    Difficile de ne pas commencer par écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def chiffrer_dechiffrer(M, clefs):
          # la çà se corse...
    Puis vous prenez vos notes de cours ou cet article de Wikipedia détaillant le chiffrement RSA.
    Vous y trouvez l'exemple:
    La clé publique d'Alice est (n,e) = (33,3), et sa clé privée est (n,d) = (33,7). Bob transmet un message à Alice.

    Chiffrement de M = 4 par Bob avec la clé publique d'Alice : 43 = 31 mod 33, le chiffré est C = 31 que Bob transmet à Alice ;
    Déchiffrement de C = 31 par Alice avec sa clé privée : 317 = 4 mod 33, Alice retrouve le message initial M = 4.
    Pour traduire cela en Python, le plus simple est de lancer l'interpréteur Python, i.e. la console et d'essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> M = 4
    >>> clefs = (33, 3) # clef publique
    >>> M ** clefs[1] % clefs[0]
    31
    >>>
    Si on essaie le déchiffrage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> M = _
    >>> clefs = (33, 7) # clef privée
    >>> M ** clefs[1] % clefs[0]
    4
    >>>
    Reste à reporter cela (une ligne) dans le corps de la fonction et vérifier qu'elle fonctionne.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Salut,

    Detail: pour faire de l'exponentiation modulaire en python, pow() est bien adapte et generallement plus rapide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    M ** clefs[1] % clefs[0]
    # equivalent a 
    pow(M, clefs[1], clefs[0])

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 0
    Points
    0
    Par défaut
    je vous suis pas les gars
    je comprends pas votre logique

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 279
    Points : 36 765
    Points
    36 765
    Par défaut
    Citation Envoyé par Intrepid13 Voir le message
    je vous suis pas les gars
    je comprends pas votre logique
    Si vous ne prenez pas le temps d'essayer d'expliquer avec des mots ce que vous ne comprenez pas, pas facile de voir comment essayer de vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Je crains que l'objectif soit trop ambitieux : il faut commencer par des choses simples.
    Pas d'aide par mp.

Discussions similaires

  1. [Python 3.X] Python: besoin d'aide pour un petit programme
    Par Intrepid13 dans le forum Général Python
    Réponses: 2
    Dernier message: 11/10/2015, 04h21
  2. Réponses: 1
    Dernier message: 12/04/2007, 11h30
  3. Aide pour un petit programme
    Par multeamage dans le forum C++
    Réponses: 13
    Dernier message: 19/08/2006, 17h36
  4. Besoin d'aide pour un petit programme
    Par Nico35 dans le forum C
    Réponses: 13
    Dernier message: 25/05/2006, 22h21
  5. Réponses: 2
    Dernier message: 06/05/2006, 15h09

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