openssl RSA密钥怎么保存和读取

Jack_M_Lv 2011-05-01 10:50:39
b=BIO_new_file("rsa.key","w");
ret=i2d_RSAPrivateKey_bio(b,r);
用这种方式保存了私钥,但是不知道用什么方式能读出来到RSA结构体中。
...全文
1500 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aijianmeng 2011-06-02
  • 打赏
  • 举报
回复
或者用PEM格式保存:

/*********************************************
* 函数功能:保存私钥到文件
* 传入参数:RSA结构体
* 传出参数:无
* 返 回 值:成功返回1否则0
********************************************/
int saveprikey(RSA *rsa)
{
FILE *file;
if (NULL == rsa)
{
printf("RSA not initial.\n");
return 0;
}
file = fopen("prikey.key","wb");

if (NULL == file )
{
printf("create file 'prikey.key' failed!\n");
return 0;
}
PEM_write_RSAPrivateKey(file, rsa, NULL, NULL, 512, NULL, NULL);
fclose(file);
return 1;
}

/****************************************
*函数功能:读取密钥存储文件,获取私钥
*传入参数:rsa RSA结构体指针
*传出参数:无
*返回值 :rsa RSA结构体指针,失败为NULL
****************************************/
RSA* getprikey(RSA *rsa)
{
FILE *file;
if (NULL == rsa)
{
printf("RSA not initial!\n");
return NULL;
}
file = fopen("prikey.key", "rb");
if (NULL == file)
{
printf("open file 'prikey.key' failed!\n");
return NULL;
}
PEM_read_RSAPrivateKey(file, &rsa, NULL, NULL);
fclose(file);
return rsa;
}


读取公钥的话PEM_read_RSAPublicKey就可以了。
aijianmeng 2011-06-02
  • 打赏
  • 举报
回复

BIO *bio = NULL;
bio = BIO_new(BIO_s_file());
if (BIO_read_filename(bio, filename) <= 0)
{
return ;
}
RSA *rsa = d2i_RSAPublicKey(bio, NULL);
Jack_M_Lv 2011-05-02
  • 打赏
  • 举报
回复
就是想将一个工程下的RSA的密钥用文件的形式给到另一个工程,然后另一个工程给读出来之后,能够用这个密钥来进行解密,这步操作就是弄不好。

inlen = fread(ucPubKey sizeof(char), 1024, f);
r=RSA_new();
unsigned char *Pt = ucPubKey;
r = d2i_RSAPublicKey(NULL, (const unsigned char **)&Pt, 1024);
这样弄了之后,ucPubKey根本就没把文件里的所有东西给读出来,只读了第一个空格之前的东西,请高手指点啊。。。。。。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧