2009-11-18 58 views
5

我使用openSSL命令创建2个文件:1用于RSA公钥& 1用于RSA私钥。如何使用C恢复RSA密钥?从文件加载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----- 

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

谢谢。

+0

你什么意思通过恢复,恢复=读? – RageZ 2009-11-18 05:01:30

+3

要小心,你不应该暴露你的私钥,甚至部分! – mjv 2009-11-18 05:21:47

+0

[在此输入链接描述](http://stackoverflow.com/questions/30621457/how-to-translate-pem-public-key-into-openssl-rsa-structure/39216814#39216814)看看这篇文章 – ANDRE 2016-08-29 23:55:27

回答

9

看看在I/O功能,在OpenSSL crypto library,特别是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); 
+1

如果您正在处理PEM格式,则公钥读取器应该是'PEM_read_RSA_PUBKEY'。请参阅http://stackoverflow.com/questions/7818117/why-i-cant-read-openssl-generated-rsa-pub-key-with-pem-read-rsapublickey – 2013-03-12 21:40:48