【问题标题】:How to export a public key in OpenSSL/libcrypto?如何在 OpenSSL/libcrypto 中导出公钥?
【发布时间】:2011-04-18 14:58:01
【问题描述】:

我使用以下方法创建了一个 RSA 密钥:

RSA_generate_key(2048, RSA_F4, NULL, NULL);

现在我想将公钥导出到另一方 B。现在,我刚刚存储了整个 RSA* 结构并通过网络发送,B 能够使用它来使用 RSA_public_encrypt( )。

但我认为在这种情况下,我实际上导出了整个公钥/私钥对,而不仅仅是公钥。我只想导出 RSA 密钥的公共部分。我如何使用 OpenSSL API 来做到这一点?

谢谢

【问题讨论】:

  • 实际上,看起来只是 memcpy'ing RSA* 结构在通过网络发送时不起作用。我什至尝试调用 RSAPublicKey_dup(),然后将其返回的 RSA* 发送给 B。但无论哪种情况,当 B 尝试使用此公钥加密时,它都会给我一个访问冲突(可能是因为 BIGNUM* 指针包含在RSA* 结构都指向 B) 上内存中的无效位置。总结一下我的问题:如何简单地将 RSA 公钥导出到另一方,这样我就可以开始做一些有趣的事情,比如密钥交换?

标签: encryption cryptography openssl rsa public-key-encryption


【解决方案1】:

您可能想要函数d2i_RSAPublicKey and i2d_RSAPublicKey。 i2d 将 RSA 密钥结构序列化为字节串,d2i 进行相反的操作。

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多