CryptoPP:非对称加解密之RSA
CryptoPP是一个强大的密码库,官网是https://www.cryptopp.com/。上面有比较详细的具体例子和说明文档,不过例子程序稍显片面,无法满足所有的应用场景,把这2天研究的一些加解密算法封装一下分享出来。
非对称加解密RSA一般会有一个密钥对,公钥加密私钥解密,或者私钥签名公钥认证。
密钥对的生成官网的例子程序已经很详细,本文的应用场景是后台服务器生成密钥对后将公钥发送给了客户端,客户端将需要传输的数据用公钥加密后发送给服务器,服务器再用匹配的私钥来解密。
简单粗暴直接添加代码
1、RSA公钥加密
// 这里传入的key是base64编码后的数据
std::string crypto::rsa_encrypt(std::string key, std::string data)
{
try {
// 初始化加密器,对key做了base64解码处理
CryptoPP::StringSource buffer_key(key, true, new CryptoPP::Base64Decoder);
CryptoPP::RSAES_PKCS1v15_Encryptor encryptor(buffer_key);
CryptoPP::RandomPool random_pool;
std::string encrypt_data;
CryptoPP::StringSource(data.c_str(), true,
// 对数据进行加密操作
new CryptoPP::PK_EncryptorFilter(random_pool, encryptor,
// 配置了加密后数据格式化输出流,以base64编码加密后数据
new CryptoPP::Base64Encoder(new CryptoPP::StringSink(encrypt_data))));
return en