CryptoPP:非对称加解密之RSA

本文介绍了如何使用CryptoPP库进行RSA非对称加解密。在后台服务器生成密钥对并发送公钥给客户端后,客户端使用公钥加密数据,服务器通过私钥解密。文章分享了RSA公钥加密和私钥解密的代码实现,特别提到了官方例子中的一些不足和解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 encrypt_data;
	}
	catch (CryptoPP::Exception e) {
		std::cout << e.what() <<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值