Programme

Retrouver tous les sujets résolus.
SoS-Math(25)
Messages : 1859
Enregistré le : mer. 2 nov. 2011 09:39

Re: Programme

Message par SoS-Math(25) » sam. 18 déc. 2021 13:54

Voici un code complet avec la méthode Vigenère donnée par le lien github :

Code : Tout sélectionner

from tkinter import Label, Tk, Entry, scrolledtext, StringVar, END
from tkinter.ttk import Combobox

#Mes fonctions:
def choix(event):
    print(menu.current()) #Choix de la méthode de chiffrement : 0, 1 ou 2...
    if menu.current() == 0:#Vigenère
        text = txt.get("1.0", END)#On récupère le contenu du ScrolledText
        chiffre_vigenere(text, [18,7,10,16])#On appelle la fonction de chiffrement

def chiffre_vigenere(phrase, cle):
    """" Chiffre une phrase par un décalage de Vigenère """

    phrase_codee = ""
    rang = 0
    n = len(cle)
    for car in phrase:
        if car not in Alphabet:
            phrase_codee += car
        else:
            i = Alphabet.index(car)
            j = (i+cle[rang]) % 26
            car_code = Alphabet[j]
            phrase_codee += car_code
            rang = (rang + 1) % n
    #On affiche la phrase codée dans le label correspondant au résultat:
    res.set(phrase_codee)


Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

root = Tk()
root.title("Interface graphique du projet Cryptographie")
root.geometry('650x400')
root.config(bg='silver')
#
Label(root, text='Choisissez une méthode de cryptographie :', font = ( "Arial Bold" , 15 ), fg='yellow',bg='black').pack()
menu = Combobox(root, values=("Méthode Vigenère", "Méthode de chiffrement affine", "Méthode de César", 8))
menu.current(2)
menu.pack()

lab = Label(root, text='Saisissez le texte que vous souhaitez coder', font = ( "Arial Bold" , 12 ), fg='black')
lab.pack()
txt = scrolledtext.ScrolledText(root, width=40,height=10)
txt.pack()
#Une phrase au départ:
txt.insert('1.0', 'MILOU ET TINTIN')
#Pour le résultat:
res = StringVar()
res_box = Label(root, textvariable=res, font = ( "Arial Bold" , 12 ), fg='black')
res_box.pack()

menu.bind("<<ComboboxSelected>>", choix)#Lier le menu déroulant à une fonction

root.mainloop()
Essaye le en choisissant la méthode Vigenère dans le menu : https://trinket.io/pygame

Bon courage pour la suite
Invité

Re: Programme

Message par Invité » dim. 19 déc. 2021 12:01

message à SOS 21 : désolée j'ai envoyé une réponse concernant ce programme info sur la mauvaise conversation. C'est un message envoyé il y a quelques minutes.

L'avez vous traité ? Avez vous contacté SOS 25 ? désolée de l'erreur de lieu d'envoi du message et MERCI
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programme

Message par sos-math(21) » dim. 19 déc. 2021 12:04

Bonjour,
oui j'ai reçu ton message précédent mais je ne le publierai pas car il contient des données personnelles.
J'ai tout de même transmis ta demande à sos-math(25) : c'est lui l'expert en Tkinter et lui seul peut t'aider sur ce forum.
Bon courage
Invité

Re: Programme

Message par Invité » dim. 19 déc. 2021 12:37

merci énormément à vous SOS 21, en espérant que SOS 25 soit dispo cet apres midi, même par mail....

Bonne journée et belles fêtes à vous !!!
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programme

Message par sos-math(21) » dim. 19 déc. 2021 12:58

Merci à toi et bonnes fêtes de fin d'année
Clémence

Re: Programme

Message par Clémence » lun. 20 déc. 2021 10:53

bonjour alors merci beaucoup pour ce que vous m'avez envoyé

j'ai eu le temps de le reprendre aujourd'hui, et j'ai remarqué plusieurs choses :

- lorsque l'on met une majuscule dans le message à coder, cela ne la traite pas, et la lettre correspondante disparaît alors dans le message codé. Y a-t-il un moyen de rectifier cela ? Moi je ne l'ai pas trouvé...

- lorsque l'on sélectionne la méthode du Carré de Polybe, cela affiche des couples de nombres, et donc pas le message codé... Comment corriger le code correspondant ? Je ne vois pas d'erreur...

- lorsqu'on sélectionne la méthode de Vigenère, rien ne se passe... Savez vous pourquoi ?

Voilà pour les 3 questions, le travail est à rendre ce soir (lundi soir), donc ce serait archi cool que tout fonctionne d'ici ce soir !

merci du fond du coeurrr, encore
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programme

Message par sos-math(21) » lun. 20 déc. 2021 15:30

Bonjour,
je peux déjà répondre à ta première question sur les majuscules non codées : c'est normal puisque ton alphabet est en minuscules et que dans ta fonction de chiffrement, tout autre caractère qui n'est pas dans l'alphabet est codé en " ".
Ceci dit, il te suffit de le préciser dans le message d'invite. Habituellement, on a plutôt tendance à demander que tout soit écrit en majuscules, cela évite les problèmes d'accent.
Ta fonction de chiffrement de César est assez surprenante : habituellement, on se sert des codes ascii des caractères (avec les fonctions chr et ord) et de division par 26 pour ne pas sortir de l'alphabet :

Code : Tout sélectionner

def cesar_chiffre(texte_clair, clef):
    texte_chiffre = ""
    # Pour chaque lettre
    for lettre in texte_clair:
        n_clair = ord(lettre) - 65        # Lettre devient nombre de 0 à 25
        n_chiffre = (n_clair + clef) % 26  # Chiffrement de César : on ajoute clef à n modulo 26
        lettre_chiffre = chr(n_chiffre + 65)  # On repasse aux lettres
        texte_chiffre = texte_chiffre + lettre_chiffre
    return texte_chiffre

Pour le chiffre de Polybe, c'est normal puisque c'est le principe du chiffre de Polybe que de renvoyer un couple de nombres correspondant aux coordonnées de la lettre dans le carré de Polybe.

Pour la chiffre de Vigenère, pourquoi as-tu créé une classe ? Quel est l'intérêt ? J'imagine que cela marche mais tu aurais pu faire plus simple avec simplement des fonctions de chiffrement et déchiffrement.
En tout cas cela fonctionne mais il faut que tu saisisses une clé sous la forme d'un mot (principe du chiffre de Vigenère).
Je ne suis pas sûr que tu aies compris les principes de chiffrement que tu manipules....
Répondre