2015-04-01 41 views
1

我使用tcp套接字编程使用RSA加密的客户端 - 服务器通信。我生成公钥和私钥,但是当我想客户端和服务器之间交换的公共密钥我得到这个错误:Python 2.7中的套接字错误,向客户端发送公共rsa密钥

类型错误:必须可以转换成一个缓冲,不公钥

这是服务器端的代码:

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

有了这个,我可以把在p ublic键,但是我不能用它来加密数据(因为现在公钥是一个字符串)。

谢谢你的帮助!

回答

0

您可以使用味酸或cPickle的:

import cPickle 
to_send=cPickle.dumps(the_key) 
sock.send(to_send) 

再unpickle它:

import cPickle 
s=sock.recv() 
key=cPickle.loads(s) 
+0

正是我需要的,谢谢。我有一个问题pickleing公钥,但我解决了这个帖子:http://stackoverflow.com/questions/2204155/why-am-i-getting-an-error-about-my-class-defining-slots - 当 - 试图对pickl – lapatatandante 2015-04-01 15:31:30