나는 openssl에서 공개 키를 사용하여 공개 키를 내보내려고합니다. 실제 키 정보가 서버에서 클라이언트로 전송되었지만 PEM 인코딩이 전송되지 않아 클라이언트의 키가 쓸모가 없습니다. 나는 기본적으로 파이썬으로 모두 보내기를 사용하여 공개 키를 보내지만 불행히도 이것은 PEM 인코딩을 보내지 않습니다. 누구든지 인코딩을 전송하는 방법을 알고 있습니까? 인코딩이 키와 함께 전송되지 않는다는 것을 알지 못했습니다.공개 키를 인식하지 못했습니다.
내가 선 key = m2c.RSA.load_pub_key('serverPubKey.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()
에서 읽을 수있는 코드입니다.
raise RSAError, m2.err_reason_error_string(m2.err_get_error()) M2Crypto.RSA.RSAError: no start line
나는 이것이 PEM 형식이 아니기 때문이라고 생각했습니다. 불행히도, 나는 그것을 어떻게 그 형식으로 넣을 지 모른다.