无法识别公钥

2024-09-29 23:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python从openssl导出公钥。我已经将实际的密钥信息从服务器传输到客户端,但是PEM编码没有被传输,所以客户端上的密钥是无用的。基本上,我在python中使用send all发送公钥,但不幸的是,这并没有发送PEM编码。有人知道如何传送编码吗? 我不知道编码不会随密钥一起传输。在

读入字符串的代码

 import socket

 import M2Crypto as m2c
 import os

 max_transfer_block = 1024
 server_addr = "10.1.1.2"
 dest_port = 3333
 listen_port = 8888
 client_addr =  "10.1.1.3"
 mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 mysocket.connect((server_addr, dest_port))

 #receive the public key from the server
 keysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 keysocket.bind((client_addr, listen_port))
 keysocket.listen(1)
 conn, client_addr = keysocket.accept()
 print 'connected by', client_addr
 data = conn.recv(max_transfer_block)
 #FILE = m2c.RSA.save_pub_key(data, "serverPubKey.pem")

 FILE = open("sPub.pem", "w")
 FILE.write(data)
 keysocket.close()     

 #transfer encrypted file
 key = m2c.RSA.load_pub_key('serverPubKey.pem')
 FILE = open("test.txt", "r")

 data = FILE.read()

 encrypted = key.public_encrypt(data, m2c.RSA.pkcs1_padding)

 mysocket.sendall(encrypted)
 mysocket.close()

当我使用key = m2c.RSA.load_pub_key('serverPubKey.pem')行时,我得到一个错误,告诉我没有起点。在

^{pr2}$

我发现这是因为没有PEM格式。不幸的是,我不知道该怎么写。在


Tags: keyclient编码dataport密钥socketpem
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:49

错误是需要从同一个包装器创建公钥/私钥对。我的意思是不是所有的密钥对都是相同的。我的具体问题是,密钥对的Openssl和M2Crypto实例的底层格式不同。因此,使用Openssl创建密钥,然后尝试使用M2Crypto来使用密钥是错误的。所有这些的教训是不要从其他包装器导入密钥。如果需要,请确保它们是相同的底层格式,如ASCII或Unicode,然后再尝试使用它们。在

相关问题 更多 >

    热门问题