2 u010997137 u010997137 于 2016.03.29 19:58 提问

PEM_read_bio_RSAPrivateKey的返回值为NULL 10C

我是要用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();

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
PEM_read_bio_RSAPrivateKey()读取私钥返回值为NULL
搞了大半天,终于解决 但是为什么是什么原因造成的我也还是不知道。 我很笨,为了解决这个问题,我把所有的失败的可能都做了亲子测试,最终得出正确的情况。 原因分析:创建工程类型的问题 解决方法:创建正确的win32程序项目就可以了。
ios集成支付宝 报错 rsa_private read error : private key is NULL解决方法
原因:  真机调试IOS支付宝功能GDB出现 rsa_private read error : private key is NULL提示 调试iOS 支付宝SDK的时候,运行demo,把 Partner(合作商户 ID) Seller(账户 ID) RSA public key(支付宝公钥) RSA private key(商户私钥) 都放到plist文件了,运行的时候
支付宝 报错 rsa_private read error : private key is NULL解决方法
原因: 真机调试IOS支付宝功能GDB出现 rsa_private read error : private key is NULL提示 调试iOS 支付宝SDK的时候,运行demo,把 Partner(合作商户 ID) Seller(账户 ID) RSA public key(支付宝公钥) RSA private key(商户私钥) 都放到plist文件了,运行的时候
OPENSSL中PEM_read_bio_RSAPublicKey和PEM_read_bio_RSA_PUBKEY的区别
PEM_write,read*_RSAPublicKey and also i2d,d2i_RSAPublicKey write and read an encoding specific for and limited to RSA keys defined by PKCS#1. Similarly *_DSAPublicKey use a specific encoding for DSA
ibatis中使用insert后,返回值为null的解决方案
ibatis中使用insert后,返回值为null的解决方案:博主本人写的代码,测试后发现问题如下: 映射文件:                              insert into hk_click(clickIp,clickDate,adId) values (#clickIp#,#clickDate#,#adId#)                        
OpenSSL中读取PEM文件的问题
openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key         BIO *key = NULL;         RSA *r = NULL;         key = BIO_new(BIO_s_file());         BIO_r
为什么我调用Ajax服务端方法返回值总是null?
如题,初学Ajax,使用了AjaxPro.2.dll. 做了一个最最最简单的验证用户名是否存在,但是无论怎样调用服务端的Ajax方法,返回值永远都是null。 而在服务端方法里,我并没有任何一个return null的句子存在。让我十分疑惑。 在Ajax方法中写了输出语句进行测试,也没有任何反应。怀疑根本没有调用到Ajax方法。 关于Ajax环境,我也不太懂得。用的是VS2005,
ExecuteScalar()返回值为空怎么办
object obj = cmd.ExecuteScalar(); if (obj ==null) this.label3.Text = "Can't find " + username + "."; else this.label3.Text = username + " 's salary is $" + obj.ToString() + "."; conn.Close();
json_decode 返回值为null
json_decode返回值为null有很多种情况1.返回的json 有bom头2.返回的json最后有逗号3.json格式不正确等 这些解决方案网上都有不一一阐述解决方案但是我发现了另一种 导致 为null的 原因使用 $curl = curl_init(); curl_setopt($curl,CURLOPT_CUSTOMREQUEST,$method); ...
关于Jdbc调用存储过程得到返回值为0(null)的问题
在csdn提问了三天都没人回复,也看到了好多人出现了跟我一样的问题却没有得到解决,所以在我解决之后马上发表这个博客, 是存储过程写的有问题 这是之前写的存储过程 发现在jdbc中怎么调用得到返回值都是0 然后把存储过程最后面 select @count as countTime 改成 SELECT @count INTO countTime