diff --git a/Interface.py b/Interface.py index 797b6a3..8f380dc 100644 --- a/Interface.py +++ b/Interface.py @@ -19,11 +19,15 @@ class Interface(tk.Tk): self.sendButton.pack() self.recvButton = tk.Button(self, text="Receive", command=self.receive) self.recvButton.pack() + # + self._cleSymetrique = None def send(self): """Envoie le message chiffré.""" message = self.entree.get().encode("utf8") # à compléter pour chiffrer le message + if self._cleSymetrique != None: + message = chiffre_xor(message, self._cleSymetrique) self.connexion.send(message) def receive(self): @@ -31,8 +35,25 @@ class Interface(tk.Tk): Attention : bloque tant que le serveur n'envoie rien.""" message = self.connexion.recv() # à compléter pour déchiffrer le message - self.message.set(message.decode("utf8")) - + if self._cleSymetrique != None: + message = chiffre_xor(message, self._cleSymetrique) + self.message.set(message_dechiffre.decode("utf8")) + + def set_cleSymetrique(self, val): + """Définit/met à jour la clé symétrique""" + self._cleSymetrique = val + def destroy(self): self.connexion.close() tk.Tk.destroy(self) + + + +def chiffre_xor(message, cle): + """chiffre/déchiffre un message à l'aide d'une clé""" + res = b"" + for i in range(len(message)): + lettre = bytes([message[i] ^ cle[i%len(cle)]]) + res += lettre + return res + diff --git a/InterfaceServeur.py b/InterfaceServeur.py index b9a87a3..edb4f57 100644 --- a/InterfaceServeur.py +++ b/InterfaceServeur.py @@ -11,7 +11,6 @@ class InterfaceServeur(Interface): self.e = 42205 self.d = 769020235650503533 # à compléter - self.cle_symetrique = None self.btn_hello = tk.Button("Serveur Hello", command=self.hello) self.btn_finished = tk.Button("Finished", command=self.finish) @@ -27,7 +26,7 @@ class InterfaceServeur(Interface): """attend la réception de la clé symétrique, la déchiffre avec sa clé privée, la mémorise et envoie le message Finished chiffré avec cette clé""" msg_recu = self.receive() - self.cle_symetrique = self.dechiffre_RSA(msg) + self.set_cleSymetrique(self.dechiffre_RSA(msg)) self.send("Finished") def dechiffre_RSA(self, msg):