From eff2e82733da1916c57bd7eda177a0cf4fc806ef Mon Sep 17 00:00:00 2001 From: "corentin.bollet" Date: Wed, 22 May 2024 11:25:03 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20hello=20finish=20d=C3=A9chiffrement=20R?= =?UTF-8?q?SA=20et=20puissance=20modulaire=20rapide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InterfaceServeur.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) 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()