Mein Python-Chat, um etwas über Sockets zu lernen, funktioniert und heute begann ich, das Crypto-Modul zu implementieren, um einen verschlüsselten Chat zu erstellen. Aber ich denke, ich mache mit öffentlichen und privaten Schlüsseln zu tun.Python-Chat mit Crypto-Modul nicht entschlüsseln
Wenn ein Client eine Verbindung mit dem Server herstellt, führen sie einen Handshake aus, um ihre öffentlichen Schlüssel auszutauschen. Daher verfügt der Client über eigene Schlüssel zum Entschlüsseln sowie über den öffentlichen Serverschlüssel, um ausgehende Nachrichten zu verschlüsseln. Und serverseitig: Jeder Client ist ein Thread und speichert nach dem Handshake seinen eigenen öffentlichen Schlüssel, um ausgehende Nachrichten und Serverschlüssel zu entschlüsseln.
Workflow ist (von meinem POV): Absender Client verschlüsselt eine Nachricht, wird an Server gesendet, Server entschlüsselt mit seinem eigenen privkey, Server verschlüsselt die Nachricht an alle anderen Clients mit ihren eigenen Pubkey. Schließlich entschlüsselt der Empfänger-Client die Nachricht mit dem Server-Pubkey.
Das Problem, das ich beim Senden von Nachrichten an alle konfrontiert bin, mit send_all
und send_all_no_room
Methoden. Manchmal wird die Nachricht korrekt entschlüsselt, aber die meisten Male wird nicht korrekt entschlüsselt.
In welchem Punkt verliere ich den richtigen Schlüssel?
Hier gibt es die server, client und comms (senden, empfangen Methoden)
Berücksichtigen Sie, dass ich benutzerdefinierte nur implementiert senden, empfangen, zu verschlüsseln, entschlüsseln Methoden send_all
und send_all_no_room
Funktionen. Zum Beispiel send_private_msg
wird nicht funktionieren.
Sah nicht, dass nach so vielen Änderungen kommen ... Danke :) – Pere