diff --git a/InterfaceServeur.py b/InterfaceServeur.py index 217ad92..b9a87a3 100644 --- a/InterfaceServeur.py +++ b/InterfaceServeur.py @@ -11,6 +11,42 @@ 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) + + def hello(self): + """attend la réception du message HELLO depuis le client, puis envoie en + clair sa clé publique""" + msg_recu = self.receive() + if msg_recu == "HELLO": + self.entree.set(self.n) + self.send() + + def finish(self): + """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.send("Finished") + + def dechiffre_RSA(self, msg): + """déchiffre un message avec sa clé privée""" + return self.puissance_mod_rapide(msg , self.d, self.n) + + def puissance_mod_rapide(self, a, b, n): + """renvoie a**b mod n""" + if b == 1: + return a + elif b == 2: + a2 = (a**2)%n + elif b % 2 == 0: + return self.puissance_mod_rapide(a2, b // 2, n) + else: + return (a * self.puissance_mod_rapide(a2, b // 2, n)) % n + + + It = InterfaceServeur()