废话不多说, 直接说怎么写代码
编译的时候如何包含库文件这种事情就不说了.
第一步, 包含头文件.
#include <openssl/rsa.h> // 既然是RSA加密该头文件肯定是需要的
#include <openssl/bn.h> // 这个头文件用于RSA的公钥私钥生成中, 生成大数用的
#include <openssl/pem.h> // 这个是用于将公钥私钥保存成pem文件用的
// 其它所需的头文件会被上述三个头文件自动包含, 比如bio.h
第二步, 生成公钥私钥文件
首先说明一下, 在RSA的私钥中, 既包含私钥信息也包含公钥信息
也就是说, 所谓的公钥, 其实就是私钥的一部分
要生成公钥私钥文件, 可是使用openssl的可执行文件openssl, 通过命令行的形式执行
# 生成私钥文件key.pem, 2048是密钥的位数
openssl genrsa -out key.pem 2048
# 基于私钥文件key.pem提取公钥文件key.pub.pem
openssl rsa -in key.pem -pubout -out key.pub.pem
除了上述使用工具, 也可以使用代码生成, 这里说一下代码生成的方法:
// 生成基本的RSA密钥数据很简单, 使用下面四句话即可
RSA* rsa = RSA_new();
BIGNUM* e = BN_new();
BN_set_word(e, 65537); // 65537是官方推荐的一个数字, 其实任意素数都是可以的
RSA_generate_key_ex(rsa, 2048, e, 0)