从文件加载RSA密钥

时间:2009-11-18 04:56:32

标签: c cryptography openssl rsa

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

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

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);

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

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-----

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

感谢。

1 个答案:

答案 0 :(得分:9)

查看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);