我需要通过线路接收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,有人可以帮忙吗?
答案 0 :(得分:1)
如果您已经拥有DER编码公钥,则可以使用d2i_RSAPublicKey()
将其转换为OpenSSL内部结构RSA
,然后可以将其与各种其他OpenSSL API一起使用以执行加密