c - 从文件加载 RSA key

标签 c cryptography openssl rsa

我使用 openSSL 命令创建了 2 个文件:1 个用于 RSA 公钥,1 个用于 RSA 私钥。如何使用 C 恢复 RSA key ?

具体来说,我有这些功能:

RSA_public_encrypt(read_num, in_buf, out_buf, public_key, RSA_PKCS1_PADDING);
RSA_private_decrypt(read_num, in_buf, out_buf, private_key, RSA_PKCS1_PADDING);

第 4 个参数 public_key 和 private_key 需要是 RSA 类型。但我只有 2 个由 openSSL 命令生成的文本文件:

File 1: 
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDP78B9GZ9ZFG6OnZ1PU+9BPoyLRuYJr3rSX470XjbJhmlq9DTn
NvG1pxWxrd5tjlmMWD4AkHqD7E87AafvQEiABdUXwf30LatT1w6tlyQWkM/HCN5k
....
npF+nDtKmGteLJVp5x7HHMnZaRbvcV2oUtgdmIMbqVYgbPkwO2tUfUPA6zg1fzhy
nNzQ35e/Hi0fgSHZib0CQEe4e4txXzkezomkWqwuGL8Qqp8iCbBn44mzxXTBvAQl
muFu93C/ULMzRoq4cpPgl3sS0F9s7+zR18SERerFvfc=
-----END RSA PRIVATE KEY-----

File 2:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP78B9GZ9ZFG6OnZ1PU+9BPoyL
RuYJr3rSX470XjbJhmlq9DTnNvG1pxWxrd5tjlmMWD4AkHqD7E87AafvQEiABdUX
wf30LatT1w6tlyQWkM/HCN5kmK5WzPUYbI1q5xGy7Eox9sJ6cNwMUOT+MSDhErgB
gkgF6uG1yGrxuEVk/QIDAQAB
-----END PUBLIC KEY-----

现在,我将这 2 个文件读取到一个 char[] 数组中。接下来我要做的是将这 2 个数组转换为 2 个 RSA key (客户端的公钥和服务器的 private_key),以便我可以使用 RSA_public_encrypt 和 RSA_private_decrypt 函数。

谢谢。

最佳答案

看看 OpenSSL crypto library 中的 I/O 函数,特别是 PEM functions

RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **x,
                                    pem_password_cb *cb, void *u);

RSA *PEM_read_RSAPublicKey(FILE *fp, RSA **x,
                                    pem_password_cb *cb, void *u);

关于c - 从文件加载 RSA key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1753726/

相关文章:

cryptography - openssl 生成的私钥不满足 n = p * q

c++ - Boost.Asio/OpenSSL HTTPS GET 证书问题

c - 当 malloc 返回时,8 字节对齐是什么意思?

c - 尽管处理器负载达到 100%,OMP 并行 for 并不会大幅加快循环速度

c - 字符串文字 : Where do they go?

c++ - 读取受 3DES 保护的 DSA 私钥

c - 如何在服务器端使用 openssl 完全禁用重新协商(重新握手)?

c - Xcode 中的 Git 忽略

go - 使用三重 DES 加密创建 RSA 私钥

algorithm - 如何计算希尔密码算法中的逆 key 矩阵?