小编Chr*_*s C的帖子

在C中使用OpenSSL库进行解密时,PEM_read_RSAPrivateKey返回"非法搜索"

这个问题让我疯了!:)我生成了几个公钥/私钥对,但是当我去加载私钥时我得到一个错误.我正在使用C.注意我确实在密钥上使用密码"password",它被设置为#define但我已经尝试将其作为字符串手动放入,没有区别.以下是我如何生成密钥:

FILE *fp;
OpenSSL_add_all_algorithms();
RSA *rsa=NULL;
unsigned char seed[KEYSIZE];
int i;

//Seed PRNG
srand(time(NULL));
RAND_bytes(seed, KEYSIZE - 1);

//Generate a key
if ((rsa=RSA_generate_key(KEYSIZE,65537,NULL,NULL)) == NULL) ERR_get_error();

//Write the public key
fp = fopen(pubkey,"w");
if (!PEM_write_RSA_PUBKEY(fp, rsa)) {
    printf("Error writing public key\n"); exit(1);
}
fclose(fp);

//Write the private key
fp = fopen(privkey,"w");
if (!PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), NULL, 0, NULL, PASSWORD))
{
   printf("Error writing private key\n"); exit(1);
}
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

这成功完成,我最终得到了适当位置的文件,它们看起来很好.我还使用这些文件在命令行上成功加密/解密,所以我知道它们有效!

这是我如何加载私钥:

static void decrypt(int locale) {
FILE *key; 
RSA *rsa;

key = …
Run Code Online (Sandbox Code Playgroud)

c openssl rsa

4
推荐指数
2
解决办法
2494
查看次数

标签 统计

c ×1

openssl ×1

rsa ×1