测试程序中的,先调用公钥加密,然后调用私钥解密。公钥加密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
第一次接触,在网上找了很多都没得结果.
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()函数。
也是看其他人碰到的问题。
那私钥呢