最近需要使用openssl库进行数据加密和身份验证,遂从网上找了一些RSA加解密和签名的例子,但是网上的代码段大部分是从文件中读取公私钥,而我们需要从内存中读取,所以有些不同。
读取公钥:
我的解决方法如下:
读取私钥:
if ((b = BIO_new_mem_buf(pbuf, -1)) == NULL) {
// PEMerr(PEM_F_PEM_READ_PUBLICKEY,ERR_R_BUF_LIB);
printf("BIO_new_mem_buf failed!\n");
return -1;
}
rsa = PEM_read_bio_RSAPrivateKey(b, &p_rsa, NULL, NULL);
BIO_set_close(b, BIO_CLOSE);
BIO_free(b);
读取公钥:
if ((b = BIO_new_mem_buf(pbuf, -1)) == NULL) {
// PEMerr(PEM_F_PEM_READ_PUBLICKEY,ERR_R_BUF_LIB);
printf("BIO_new_mem_buf failed!\n");
return -1;
}
rsa = PEM_read_bio_RSA_PUBKEY(b, &p_rsa, NULL, NULL);
BIO_set_close(b, BIO_CLOSE);
BIO_free(b);
其中rsa为RSA的对象指针,pbuf为密钥文件中的内容!