准备工作
生成私钥文件(里面已包含公钥)
openssl genrsa -out private.pem 1024
从私钥文件中提取公钥
openssl rsa -in private.pem -pubout -out public.pem
如果用
openssl rsa -in private.pem -RSAPublicKey_out -out public.pem
报错 unknown option -RSAPublicKey_out
openssl 是0.9.8e版本的,不知道为啥没这个参数
没了这个参数,读取公钥的时候只能用 PEM_read_RSA_PUBKEY
而不能用PEM_read_RSAPublicKey,因为带-RSAPublicKey_out参数生成的pem文件不一样(不仅仅是头尾)
网上抄来的
函数PEM_read_RSA_PUBKEY读取的是
-----BEGIN PUBLIC KEY-----
函数PEM_read_RSAPublicKey读取的是
-----BEGIN RSA PUBLIC KEY-----
但是!!!,为毛private.pem里面是
-----BEGIN RSA PRIVATE KEY-----
这样的,
而生成的public.pem竟然是
-----BEGIN PUBLIC KEY-----
的?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main()
{
RSA *rsa;
FILE *fp;
if ((fp = fopen("C:\\openssl_test\\public.pem", "r")) == NULL) {
return -1;
}
rsa = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL);
RSA_free(rsa);
fclose(fp);
if ((fp = fopen("C:\\openssl_test\\private.pem", "r")) == NULL) {
return -1;
}
rsa = PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL);
RSA_free(rsa);
return 0;
}
本文介绍了如何使用OpenSSL生成RSA密钥对,包括私钥文件(private.pem)和公钥文件(public.pem)。在OpenSSL 0.9.8e版本中,由于缺少-RSAPublicKey_out参数,导致公钥文件不能用PEM_read_RSAPublicKey函数读取,而必须使用PEM_read_RSA_PUBKEY。内容还揭示了private.pem和public.pem文件中不同类型的公钥表示方式。

1625

被折叠的 条评论
为什么被折叠?



