From e35711fb609aadd3b29f7481f91549110f26708e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20DUBARD?= <loic.dubard@ensiie.fr> Date: Sun, 4 Nov 2018 21:58:31 +0100 Subject: [PATCH] Upload the python script --- cryptageaffineGUI.py | 221 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 cryptageaffineGUI.py diff --git a/cryptageaffineGUI.py b/cryptageaffineGUI.py new file mode 100644 index 0000000..18ab2f3 --- /dev/null +++ b/cryptageaffineGUI.py @@ -0,0 +1,221 @@ +#!/usr/bin/python + +from tkinter import * +import tkinter.ttk as ttk +import time +import string +from tkinter import messagebox +import sys + +cle1=1 +cle2=0 + +def pgcd(nombre1, nombre2): + """dkfjbg""" + reste = nombre1 % nombre2 + while reste != 0: + nombre1 = nombre2 + nombre2 = reste + reste = nombre1 % nombre2 + return nombre2 + +def lololol (choix,cle1,cle2,mot): + letters=string.ascii_letters + string.punctuation + string.digits + resultat="" + choix=int(choix) + cle1=int(cle1) + cle2=int(cle2) + mot=str(mot) + if choix==1: + for letter in mot: + if letter==" ": + resultat+=" " + else: + try: + x=(letters.index(letter)*cle1)+cle2 + #print ("x="+str(x)) + x=x%94 + #print "x="+str(x) + resultat+=letters[x] + except: + pass + #print (resultat) + if choix==2: + #trouver le coef de decodage + coef=0 + while (coef*cle1)%94!=1: + coef+=1 + for letter in mot: + if letter==" ": + resultat+=" " + else: + try: + x=coef*(letters.index(letter)-cle2) + #print "x="+str(x) + x=x%94 + #print "x=",str(x) + resultat+=letters[x] + except: + pass + return resultat + +def cle_click(): + def quitter_fenetre2(): + global cle1 + global cle2 + cle1=int(entrycle1.get()) + cle2=int(entrycle2.get()) + if cle1<=0 or cle1>94: + messagebox.showerror("erreur cle 1","Veuillez mettre un nombre strictement positif et strictement inferieur a 94") + elif type(cle1)!=type(2): + messagebox.showerror("erreur cle 1","Veuillez utiliser un nombre pour la cle 1 !") + elif type(cle2)!=type(2): + messagebox.showerror("erreur cle 2","Veuillez utiliser un nombre pour la cle 2 !") + elif pgcd(cle1,94)!=1: + messagebox.showerror("erreur cle 1","Veuillez utiliser un nombre premier avec 94 pour la cle 1") + elif cle2>94 or cle2<0: + messagebox.showerror("Erreur cle 2","Veuillez mettre un nombre strictement compris entre 0 et 94") + else: + fenetre2.destroy() + global cle1 + global cle2 + fenetre2=Tk() + fenetre2.title("modifier la cle") + fenetre2.resizable(False,False) + quitterbouton=Button(fenetre2,text="OK",command=quitter_fenetre2).pack(side=BOTTOM) + labelcle=Label(fenetre2,text="entrer les 2 cles").pack() + entrycle1=Entry(fenetre2,width=5) + entrycle1.pack(side=LEFT) + entrycle2=Entry(fenetre2,width=5) + entrycle2.pack(side=LEFT) + entrycle1.insert(0,cle1) + entrycle2.insert(0,cle2) + + +def process_click(): + lol=0 + progress.start() + label3.config(state=NORMAL) + label3.delete("1.0",END) + #print (str(entry.get("1.0",END))) + #print ("choix="+str(choix.get())) + label3.insert(END,lololol(choix.get(),cle1,cle2,entry.get("1.0",END))) + label3.config(state=DISABLED) + #print (progressvar.get()) + #""" + while lol<95: + time.sleep(.003) + progress.step("1") + lol+=1 + progress.update_idletasks() + #""" + progress.stop() + progressvar.set(0) + + +def StatusBarUpdate(): + if int(choix.get())==1: + statusvar.set("Ready to encode.") + elif int(choix.get())==2: + statusvar.set("Ready to decode.") + else: + statusvar.set("Preparing to do nothing...") +def StatusBarUpdatehelp(event=None): + if fenetre1.call(event.widget, "index", "active") == 0: + statusvar.set("About This Application") + elif fenetre1.call(event.widget, "index", "active") == 1: + statusvar.set("How to use this application") + else: + StatusBarUpdate() +def paste_menu(event=None): + text1=fenetre1.selection_get(selection="CLIPBOARD") + entry.delete("1.0",END) + entry.insert(END,text1) +def copy_menu(event=None): + fenetre1.clipboard_clear() + text1=label3.get("1.0",END) + fenetre1.clipboard_append(text1) +def onAbout(): + messagebox.showinfo("A propos :","Par Dudard Loic, libre de droit") +def onHelp(event=None): + messagebox.showinfo("Aide:","comment utiliser le logiciel ? -Si vous voulez copier le contenu du resultat,vous devez faire Ctrl+c directement sans avoir a selectionner le texte.") +def quitter_fenetre1(event=None): + var=messagebox.askokcancel("Quitter ?","Voulez vous vraiment quitter ?") + #print var + if var==True: + fenetre1.destroy() +#definition de la fenetre principale +fenetre1=Tk() +fenetre1.title("Encoder v1.0") +fenetre1["bg"]="green" + +#menu +menu=Menu(fenetre1) +fenetre1.config(menu=menu) + +filemenu=Menu(menu,tearoff=0) +menu.add_cascade(label="File",menu=filemenu) +filemenu.add_command(label="Exit",command=quitter_fenetre1,accelerator="Ctrl+q") +fenetre1.bind_all("<Control-q>",quitter_fenetre1) + +edit=Menu(menu,tearoff=0) +menu.add_cascade(label="Edit",menu=edit) +edit.add_command(label="copy (result)",command=copy_menu,accelerator="Ctrl+c") +edit.add_command(label="paste (in entrybox)",command=paste_menu,accelerator="Ctrl+v") +fenetre1.bind_all("<Control-c>",copy_menu) +fenetre1.bind_all("<Control-v>",paste_menu) + +helpmenu=Menu(menu,tearoff=0) +menu.add_cascade(label="Help",menu=helpmenu) +helpmenu.add_command(label="About",command=onAbout) +helpmenu.add_command(label="Help",command=onHelp,accelerator="F11") +helpmenu.bind("<<MenuSelect>>",StatusBarUpdatehelp) +fenetre1.bind_all("<F11>",onHelp) + +#status bar +statusvar=StringVar() +status=Label(fenetre1,text="Preparing to do nothing...",bd=1,relief=SUNKEN,anchor=W,textvariable=statusvar) +status.pack(side=BOTTOM,fill=X) +statusvar.set("Preparing to do nothing...") + +#frames +cadre1=Frame(fenetre1,borderwidth=2,relief=GROOVE) +cadre1.pack(padx=10,pady=10) + +cadre2=Frame(cadre1,relief=GROOVE) +cadre2.pack(side=LEFT,padx=10,pady=10) + +cadre3=Frame(cadre1,relief=GROOVE) +cadre3.pack(side=LEFT,padx=20) + +#widgets cadre2 +label1=Label(cadre2,text="entrez texte :").pack() + +entry=Text(cadre2,height=10,width=30) +entry.pack() + +label2=Label(cadre2,text="resultat :").pack(pady=20) + +label3=Text(cadre2,height=10,bg="white",width=30,state=DISABLED) +label3.pack(pady=5) + +#widgets cadre3 +cle=Button(cadre3,text="modifier la cle",command=cle_click).pack(pady=20) + +choix=IntVar() +choix1=Radiobutton(cadre3,text="Crypter",variable=choix,value=1,command=StatusBarUpdate) +choix1.pack() +choix2=Radiobutton(cadre3,text="Decrypter",variable=choix,value=2,command=StatusBarUpdate) +choix2.pack() + +process=Button(cadre3,text="process",command=process_click).pack(pady=30) + +progressvar=IntVar() +progress=ttk.Progressbar(cadre3,mode="determinate",variable=progressvar,length=200) +progress.pack() + +#gestion du redimensionnement +fenetre1.resizable(False,False) + +#loop obligatoire +fenetre1.mainloop() -- GitLab