返回值是-1,其中rsa_len=128,str有值,但是decrypted=“”,空字符串,有人知道为什么吗,需要什么就说,我在线等,豆子不多,见谅
打印的错误信息RSA_private_decrypt:: No such file or directory
#define PRIKEY "./prikey.pem"
char *decrypted=NULL;
char *my_decrypt(unsigned char *str, char *prikey_path)
{
OpenSSL_add_all_algorithms();//有些算法必须这样初始化。
//打开私钥文件
FILE* priv_fp=fopen(PRIKEY,"r");
if(priv_fp==NULL){
printf("failed to open PRIKEY file %s!\n", PRIKEY);
return NULL;
}
// 从文件中读取私钥
RSA *rsa2 = PEM_read_RSAPrivateKey(priv_fp, NULL, NULL, NULL);
if(rsa2==NULL){
printf("unable to read private key!\n");
return NULL;
}
// 用私钥解密
int rsa_len = RSA_size(rsa2);
printf("rsa_len: %d\n", rsa_len);
//char *decrypted=NULL;
decrypted = (char *)malloc(1024);
memset(decrypted, 0, 1024);
printf("strlen(str): %d\n", strlen(str));
int len=RSA_private_decrypt(rsa_len, str, decrypted, rsa2,RSA_PKCS1_PADDING);// RSA_NO_PADDING
if(len==-1){
perror("RSA_private_decrypt:");
return NULL;
}
fclose(priv_fp);
return decrypted;
}
没有秘钥文件吧
z终于来人了,有的,代码我补充上了,您在看看
@life清者自清: http://www.cnblogs.com/cswuyg/p/3187462.html 这里有人试过,是否其他的参数有问题
@2012: 木有啊,有可能数据有错误么