在OpenSSL中使用DER编码的RSA公钥

在OpenSSL中使用DER编码的RSA公钥,openssl,Openssl,我需要通过网络接收RSA公钥,并使用它加密数据以发送回服务器。我无法控制密钥服务器发送的格式,必须使用当前实现 我已经用python实现了协议 key_bin = get_server_key() # "30818902818100e8ecd6f1..." key = Crypto.PublicKey.RSA.importKey(key_bin) padded_data = add_rsa_padding(data) encrypted_data = key.encrypt(padded_dat

我需要通过网络接收RSA公钥,并使用它加密数据以发送回服务器。我无法控制密钥服务器发送的格式,必须使用当前实现

我已经用python实现了协议

key_bin = get_server_key() # "30818902818100e8ecd6f1..."
key = Crypto.PublicKey.RSA.importKey(key_bin)
padded_data = add_rsa_padding(data)
encrypted_data = key.encrypt(padded_data, 0)[0]
send_data(encrypted_data)

现在我有麻烦把它移植到C++库,它最好使用OpenSSL,但是我找不到一种方法来加载非PEM格式的公钥,并且在接收到像是可怕的想法时动态地将它转换成PEM。可能我错过了一些API,有人能帮我吗?

如果您已经有DER编码的公钥,您可以使用d2i\u RSAPublicKey将其转换为OpenSSL内部结构RSA,然后可以与其他各种OpenSSL API一起使用以执行加密