python 2.7 中的套接字错误,向客户端发送 public rsa 密钥
socket error in python 2.7, sending public rsa key to client
我正在使用 tcp 套接字编写使用 RSA 加密的客户端-服务器通信。我生成 public 和私钥,但是当我想在客户端和服务器之间交换 public 密钥时,我收到此错误:
TypeError:必须可转换为缓冲区,而不是 PublicKey
这是服务器代码:
import socket
import rsa
print "Generating keys"
(public, private) = rsa.newkeys(1024, poolsize=2)
print "Keys generated."
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
tcpSocket.bind(("0.0.0.0", 1025))
tcpSocket.listen(1)
print "Waiting for client..."
(client, (ip, port)) = tcpSocket.accept()
print "Connection received from: ", ip
client.send(public) #This is where I get the error
我也试过这条线:
client.send(str(public))
有了这个我可以发送 public 密钥,但是我不能用它来加密数据(因为现在 public 密钥是一个字符串)。
感谢您的帮助!
您可以使用 Pickle 或 cPickle:
import cPickle
to_send=cPickle.dumps(the_key)
sock.send(to_send)
然后解开:
import cPickle
s=sock.recv()
key=cPickle.loads(s)
我正在使用 tcp 套接字编写使用 RSA 加密的客户端-服务器通信。我生成 public 和私钥,但是当我想在客户端和服务器之间交换 public 密钥时,我收到此错误:
TypeError:必须可转换为缓冲区,而不是 PublicKey
这是服务器代码:
import socket
import rsa
print "Generating keys"
(public, private) = rsa.newkeys(1024, poolsize=2)
print "Keys generated."
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
tcpSocket.bind(("0.0.0.0", 1025))
tcpSocket.listen(1)
print "Waiting for client..."
(client, (ip, port)) = tcpSocket.accept()
print "Connection received from: ", ip
client.send(public) #This is where I get the error
我也试过这条线:
client.send(str(public))
有了这个我可以发送 public 密钥,但是我不能用它来加密数据(因为现在 public 密钥是一个字符串)。
感谢您的帮助!
您可以使用 Pickle 或 cPickle:
import cPickle
to_send=cPickle.dumps(the_key)
sock.send(to_send)
然后解开:
import cPickle
s=sock.recv()
key=cPickle.loads(s)