Programme

Répondre


Aide syntaxe LaTeX
Les BBCodes sont activés
[img] est désactivé
[flash] est désactivé
[url] est activé
Les smileys sont désactivés

Revue du sujet
   

Si vous souhaitez joindre un ou plusieurs fichiers, complétez les indications suivantes.

Étendre la vue Revue du sujet : Programme

Re: Programme

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....

Re: Programme

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

Re: Programme

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

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

Re: Programme

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 !!!

Re: Programme

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

Re: Programme

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

Re: Programme

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

Re: Programme

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

Bonjour,

Dans le dernier code il y a déjà le label permettant de recevoir le texte chiffré : res_box

Il suffit alors de placer à la fin de la fonction de chiffrement (vigenere() par exemple) une ligne :

res.set(texte_chiffre)

où :

-- res est le text variable du label res_box
-- res.set() permet de modifier le texte de ce label res_box
-- texte_chiffre est la chaine de caractères, résultat du chiffrement

Teste le dernier code donné, tu verras apparaitre "coucou" dans la res_box. Essaye de comprendre le fonctionnement, il y a tout ce qu'il te faut je pense pour l'interface graphique.
sosmat.png
A bientôt

Re: Programme

par Invité » ven. 17 déc. 2021 13:58

merci je suis débordée dsl de répondre que maintenant, encore des évaluations demain, etc... Bcp de DST....

Maintenant comment puis je inclure un cadre dans l'interface dans lequel s'afficherait le résultat ?

pas trop de doc la dessuys sur le net....

MERCI

Re: Programme

par SoS-Math(25) » mer. 15 déc. 2021 20:40

Voici un début de code pour la partie graphique. Il y a des print pour t'aider à comprendre.

Puisque tu as déjà les fonctions pour chiffrer, le travail touche à sa fin.

Entre un message puis choisis la méthode Vigenère et tu verras le fonctionnement.

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())
    if menu.current() == 0:#Vigenère
        text = txt.get("1.0", END)#On récupère le contenu du ScrolledText
        vignere(text)#On appelle la fonction de chiffrement
        
def vignere(text):
    #Chiffrement du message puis affichage du résultat:
    res.set("coucou")
    
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()
#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()
Rappel du lien pour tester en ligne :

https://trinket.io/pygame

Bon courage pour la suite.

Re: Programme

par SoS-Math(25) » mer. 15 déc. 2021 16:35

Pense bien à conserver ton code en copier/coller sur un bloc notes ou un traitement de texte de ton ordinateur sinon tu risques de tout perdre.

Je dois partir, je regarde ce soir ta question.

Bon courage si tu peux avancer encore un peu

Re: Programme

par Invité » mer. 15 déc. 2021 16:34

D'accord merci beaucoup !

Et maintenant, j'ai dans un autre fichier Python des méthodes de chiffrement que j'ai programmées (par exemple la méthode de César).

Comment puis-je relier ce fichier qui est une sorte de catalogue de programmes de chiffrement à l'interface graphique ? Par exemple, comment faire en sorte que lorsque je sélectionné méthode Vigenère dans le menu déroulant, le message saisi dans l'interface (que l'on souhaite coder) soit codé via la méthode de Vigenere et affiche ce résultat ?

Je ne sais pas si je suis claire... En tout cas j'ai trouvé aucune information sur le net qui m'aurait permis de programmer ça avec Tkinter, ou alors c'était trop complexe et je n'y comprenais rien... Alors comment compléter ce début de programme d'interface graphique ?

Merci de toute l'aide par avance

Re: Programme

par SoS-Math(25) » mer. 15 déc. 2021 16:28

Bonjour,

L'interface graphique tkinter est étroitement liée au système d'exploitation. Il faut donc de nouveaux outils pour l'utiliser en ligne.

Voici un outil :

https://trinket.io/pygame

J'ai un peu rectifié ton code :

Code : Tout sélectionner

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

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=30)
txt.pack()

root.mainloop()
Tu peux copier/coller ce code dans l'éditeur (lien plus haut) et travailler dessus mais il faut être connecté(e) voire payer pour partager des travaux avec cet outil.

Donc pense bien à conserver ton code en copier/coller sur un bloc notes ou un traitement de texte de ton ordinateur sinon tu risques de tout perdre.

Pour expliquer le code, j'ai positionné tous les éléments de la fenêtre avec .pack(). On aurait pu aussi les positionner avec .grid() mais il ne faut pas utiliser les deux en même temps sur une même fenêtre graphique sinon cela engendre un conflit, c'était le problème de ton code.

Bon courage pour la suite

Re: Programme

par sos-math(21) » mer. 15 déc. 2021 15:43

Bonjour,
je transfère ta demande auprès d'un autre modérateur qui s'y connaît mieux que moi en Tkinter.
Bonne continuation

Re: Programme

par Invité » mer. 15 déc. 2021 15:33

OK merci beaucoup

Et pour l'interface graphique vous avez reçu mon message ?

Vous pourrez m'aider ? J'ai tellement besoin d'aide
...

Haut