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

Téléchargez Python Discussion :

(Dé)Chiffrement par substitution


Sujet :

Téléchargez Python

  1. #1
    Membre éclairé

    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2018
    Messages : 16
    Points : 875
    Points
    875
    Par défaut (Dé)Chiffrement par substitution
    Bonjour,

    Je vous propose un nouvel élément à utiliser : (Dé)Chiffrement par substitution

    (Dé)Chiffrement par substitution avec interface graphique

    python3-tkinter requis

    Qu'en pensez-vous ?

  2. #2
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2024
    Messages : 3
    Points : 4
    Points
    4
    Par défaut modestes contributions à ce code
    Citation Envoyé par nulos Voir le message
    Bonjour,

    Je vous propose un nouvel élément à utiliser : (Dé)Chiffrement par substitution

    (Dé)Chiffrement par substitution avec interface graphique

    python3-tkinter requis

    Qu'en pensez-vous ?
    Merci pour ce code qui me permet de présenter mon deuxième "programme" en Python, et donc mon deuxième message (eh oui je suis toujours débutant sur ce langage!).

    Je trouve que ton code est très compact et propre avec une intégration graphique que, personnellement, je recherchais pour me faire la main.

    Je te propose cette amélioration qui complexifie le décryptage mais pas ton algorithme compact.

    Dis moi ce que tu en penses ?

    ChiffrementParTranslation.py

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 849
    Points : 7 165
    Points
    7 165
    Par défaut
    Bonjour,

    J'ai lu en diagonale, mais une des premières fonctions comme supplement par ex. est assez inefficace

    Citation Envoyé par code du PO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # détermination de tous les caractères n'étant pas dans l'aphabet
    def supplement ( alphabet,verif ):
        ajout=""
        for x in verif:
            if (ajout+alphabet).find(x)<0:
                ajout += x
     
        return ajout
    qui pourrait être remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import string
     
    # Alphabet en lettres minuscules et majuscule
    alph = set(string.ascii_lowercase + string.ascii_uppercase + " ")
     
    def supplement(alphabet: set[str], verif: str):
        non_alphabet_chars = set()
     
        for x in verif:
            if x not in alphabet:
                non_alphabet_chars.add(x)
     
        return ''.join(non_alphabet_chars)
    Je ne regarde pas la suite car pas le temps, mais il y a sûrement pas mal de corrections à faire à mon avis...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2024
    Messages : 3
    Points : 4
    Points
    4
    Par défaut remarque sur la solution proposée
    Citation Envoyé par fred1599 Voir le message
    Bonjour,

    J'ai lu en diagonale, mais une des premières fonctions comme supplement par ex. est assez inefficace

    qui pourrait être remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import string
     
    # Alphabet en lettres minuscules et majuscule
    alph = set(string.ascii_lowercase + string.ascii_uppercase + " ")
     
    def supplement(alphabet: set[str], verif: str):
        non_alphabet_chars = set()
     
        for x in verif:
            if x not in alphabet:
                non_alphabet_chars.add(x)
     
        return ''.join(non_alphabet_chars)
    Je ne regarde pas la suite car pas le temps, mais il y a sûrement pas mal de corrections à faire à mon avis...
    Merci Fred1599 pour le temps passé pour ce retour : effectivement, je ne connais pas les subtilités de la bibliothèque "string".

    J'ai testé ta proposition et cela ne peut convenir : en effet, visiblement, la fonction "set" permet d'affecter dans un ordre 'aléatoire' les arguments en entrée de manière unique.
    Comme la finalité est une substitution, l'ordre a son importance pour pouvoir crypter et décrypter le message (substitution d'un caractère ordonné par un autre tout aussi ordonné dans l'alphabet global=alphabet initial+les caractères uniques et ordonnés n'existant pas dans la version initiale de l'alphabet).

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 849
    Points : 7 165
    Points
    7 165
    Par défaut
    Bonjour,

    Dans ce cas on utilise set pour juste vérifier la présence d'un caractère,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import string
     
    alph = string.ascii_lowercase + string.ascii_uppercase + " "
     
    def supplement(alphabet: str, verif: str):
        non_alphabet_chars = []
        seen_chars = set()
     
        for x in verif:
            if x not in alphabet and x not in seen_chars:
                non_alphabet_chars.append(x)
                seen_chars.add(x)
     
        return ''.join(non_alphabet_chars)
    ça reste beaucoup plus efficace que la proposition du code d'origine.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Exercice chiffrement par substitution
    Par croustibat0630 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/03/2018, 09h12
  2. Chiffrement par substitution
    Par alexandrempg dans le forum C++
    Réponses: 21
    Dernier message: 26/11/2016, 15h06
  3. piratage par substitution de fichier .js
    Par mapmip dans le forum Sécurité
    Réponses: 7
    Dernier message: 25/11/2009, 10h10
  4. Suppression de caractères par substitution
    Par abirihabibi dans le forum Langage
    Réponses: 2
    Dernier message: 28/08/2008, 00h15

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