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