python实现socket的rsa加密通信
时间: 2023-11-04 11:04:39 浏览: 62
以下是基于Python的Socket通信使用RSA加密的示例代码:
```python
import socket
import rsa
# 生成RSA公钥和私钥
(publicKey, privateKey) = rsa.newkeys(512)
# 定义远程主机和端口号
host = 'localhost'
port = 12345
# 创建一个TCP socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定主机和端口号
server_socket.bind((host, port))
# 开始监听
server_socket.listen(1)
print('Listening for incoming connections...')
# 接受客户端连接请求
(client_socket, address) = server_socket.accept()
print('Connected from: ', address)
# 发送公钥给客户端
client_socket.send(publicKey.save_pkcs1())
# 接收客户端的消息并加密
while True:
recv_data = client_socket.recv(1024)
message = recv_data.decode('utf-8')
if message == 'exit':
break
encrypted_msg = rsa.encrypt(message.encode('utf-8'), privateKey)
print('Received encrypted message: ', encrypted_msg)
client_socket.send(encrypted_msg)
# 关闭socket连接
client_socket.close()
server_socket.close()
```
以上代码实现了一个简单的RSA加密通信服务端。首先生成RSA公钥和私钥,然后绑定主机和端口号,并开始监听客户端连接请求。当客户端连接成功后,服务端将公钥发送给客户端。客户端发送消息时,服务端接收到消息后使用私钥进行解密并打印到控制台,然后将加密后的消息发送回客户端。当客户端发送exit命令时,服务端关闭连接。