CryptoPP:非对称加解密之RSA

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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值