IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 8 fois
Vote des utilisateurs
0 
0 
Détails
Licence : Non renseignée
Mise en ligne le 28 septembre 2022
Plate-formes : Linux, Windows
Langue : Français
Référencé dans
Navigation

(Dé)Chiffrement par substitution

(Dé)Chiffrement par substitution avec interface graphique
python3-tkinter requis
Avatar de Dragon78
Candidat au Club https://www.developpez.com
Le 11/05/2024 à 1:09
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 ?

[ATTACH]654504d1/a/a/a" />
Avatar de fred1599
Expert éminent https://www.developpez.com
Le 12/05/2024 à 12:29
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
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
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...
Avatar de Dragon78
Candidat au Club https://www.developpez.com
Le 12/05/2024 à 20:41
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
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).
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.