|
|
@ -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 |
|
|
|
|
|
|
|