Python聊天,加密模块未解密

Python聊天,加密模块未解密,python,encryption,Python,Encryption,我的python聊天学习套接字正在工作,今天我开始实现加密模块来进行加密聊天。但我想我弄乱了公钥和私钥 当客户机连接到服务器时,他们进行握手以交换公钥。所以,客户端有自己的密钥进行解密,加上服务器公钥对传出消息进行加密。服务器端:每个客户端都是一个线程,握手后存储自己的公钥以加密传出消息,服务器密钥以解密 工作流来自我的POV:发送方客户端加密消息,发送到服务器,服务器使用自己的私钥解密,服务器使用自己的公钥将消息加密到所有其他客户端。最后,收件人客户端使用服务器公钥解密消息 使用send_al

我的python聊天学习套接字正在工作,今天我开始实现加密模块来进行加密聊天。但我想我弄乱了公钥和私钥

当客户机连接到服务器时,他们进行握手以交换公钥。所以,客户端有自己的密钥进行解密,加上服务器公钥对传出消息进行加密。服务器端:每个客户端都是一个线程,握手后存储自己的公钥以加密传出消息,服务器密钥以解密

工作流来自我的POV:发送方客户端加密消息,发送到服务器,服务器使用自己的私钥解密,服务器使用自己的公钥将消息加密到所有其他客户端。最后,收件人客户端使用服务器公钥解密消息

使用send_all和send_all no_room方法向所有人发送消息时面临的问题。有时消息被正确解密,但大多数情况下未正确解密

在哪一点上我丢失了正确的钥匙

这里有发送和接收方法

考虑到我只实现了自定义的send、receive、encrypt、decrypt方法来发送\u all和发送\u all\u no\u room函数。例如,send\u private\u msg无法工作。

问题在于send\u all函数:

def send_all(self, message):
    """Send to all method, broadcast a message"""
    for sock in [client.sock for client in clients]:
        if sock != self.sock:
            message_encripted = self.encriptar(message,client)
            send(sock,message_encripted)
for循环的每个迭代都使用相同的客户机。同样的问题也存在于send_all_no_room功能中

固定代码:

def send_all(self, message):
    """Send to all method, broadcast a message"""
    for client in clients:
        if client is not self:
            message_encripted = self.encriptar(message,client)
            send(client.sock,message_encripted)