枯音未来 2016-03-29 11:58
浏览 3312
已结题

PEM_read_bio_RSAPrivateKey的返回值为NULL

我是要用OPENSSL编写私钥解密部分,但在使用函数PEM_read_bio_RSAPrivateKey()的返回值为NULL。
以下是我的代码:
void rsadecrption(unsigned char cipher[],CString Path)
{CFile fc;
CFileException e;
if(!fc.Open(Path,CFile::modeCreate | CFile::modeWrite|CFile::shareExclusive|CFile::typeBinary,&e))
{
//AfxMessageBox("打开fp失败");
return;
}
EVP_PKEY* evpkey;
RSA *rsa=NULL;
BIO *key = NULL;
unsigned long len;
char dir[2048]={NULL};
memcpy(dir,Path,1024); //ques
for(int i=0;i<1024;i++)
{
if(i%2==0)
dir[i/2]=dir[i];
}
ERR_load_crypto_strings(); //from Internet
key = BIO_new(BIO_s_file());
BIO_read_filename(key,dir);
rsa = PEM_read_bio_RSAPrivateKey(key, NULL, NULL, NULL); //返回值为NULL
BIO_free_all(key);

if(rsa==NULL){
    printf("unable to read private key!\n");
    return; 
}   

len = RSA_size( rsa );
unsigned char sign[4096]={NULL};
//int Len=strlen(cipher);
int block=1024/256;
//int remain=1024%256;
for(int i=0;i<block;i++)
{
    if(RSA_private_decrypt(256,sign,cipher,rsa,RSA_PKCS1_PADDING)<=0)
        return;
    fc.Write(sign,128);
}   
//fwrite(cipher,strlen(sign),1,fc);
fc.Close();

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!