YYgao 2018-10-15 14:25 采纳率: 0%
浏览 3439
已结题

C++ OPENSSL 中PEM_read_bio_RSAPrivateKey 返回NULL 求教呀

测试程序中的,先调用公钥加密,然后调用私钥解密。公钥加密publi是1,私钥解密publi 是0.
RSA* createRSA(unsigned char*key,int publi)
{
RSA *rsa= NULL;
BIO*keybio;
keybio= BIO_new_mem_buf(key, -1);
if(keybio==NULL)
{
printf("Failed to create key BIO\n");
return 0;
}
size_t nSize = BIO_ctrl_pending(keybio);
if(publi)
{
rsa = PEM_read_bio_RSA_PUBKEY(keybio, &rsa,NULL, NULL);
}
else
{
rsa= PEM_read_bio_RSAPrivateKey(keybio, &rsa,NULL, NULL);
}
if(rsa== NULL)
{
printf("Failed to create RSA\n");
}
return rsa;
}
PEM_read_bio_RSA_PUBKEY 返回值正常
PEM_read_bio_RSAPrivateKey 返回值是NULL
第一次接触,在网上找了很多都没得结果.

  • 写回答

2条回答

  • 一米阳光620 2020-05-20 16:46
    关注

    rsa加密的public key格式有多种,常见的有两种,一种密钥头为‘-----BEGIN RSA PUBLIC KEY-----’,一种开头为‘-----BEGIN PUBLIC KEY-----’,二者分别对应rsa的PKCS#1和PKCS#8格式。
      使用openssl库加载rsa的公钥时,使用的函数也不同。以字符串公钥为例,对PKCS#1格式的密钥加载使用PEM_read_bio_RSAPublicKey()函数,对PKCS#8格式公钥的加载使用PEM_read_bio_RSA_PUBKEY()函数。

    也是看其他人碰到的问题。
    
    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗