用Crypto++的RSA算法进行加解密

本文介绍了在避免使用大型OpenSSL库的情况下,选择Crypto++库进行RSA加密解密的原因。详细说明了如何利用Crypto++库进行二进制数据的RSA加解密操作,并指出在使用过程中需要注意的API变化。代码示例展示了生成RSA密钥对、加密和解密的步骤,同时提到在解密时内存分配的建议。
摘要由CSDN通过智能技术生成

OpenSSL库过于庞大,一个exe静态链接后,会变成2MB。于是寻找别的算法库。最后找到了Crypto++。程序编译后,Release版本只会增大200KB,还是很不错的。

cryptest中的代码,会自动把二进制转为字符串,很让人头大。幸好找到了以Crypto++实现RSA加解密二进制数据,讲解了二进制操作的方法。

因为那篇文章已经有几年历史,有几个API有一些变动。

生产RSA密钥对(默认4096):

#include <randpool.h>
#include <files.h>
#include <rsa.h>
void GenerateRSAKey(uint8_t* pSeed, uint64_t u64SeedLen, uint8_t* pPrivateKey, uint64_t& u64PrivateKeyLen, uint8_t* pPublicKey, uint64_t& u64PublicKeyLen)
{
   
	CryptoPP::RandomPool randomPool;
	randomPool.IncorporateEntropy(pSeed, (size_t)u64SeedLen);

	CryptoPP::RSAES_OAEP_SHA_Decryptor decryptor(randomPool, 4096);
	CryptoPP::ArraySink decArr(pPrivateKey, (size_t)u64PrivateKeyLen);

	decryptor.AccessMaterial().Save(decArr);
	decArr.MessageEnd();
	u64PrivateKeyLen = decArr.TotalPutLength();

	CryptoPP::RSAES_OAEP_SHA_Encryptor encryptor(decryptor);
	CryptoPP::ArraySink encArr(pPublicKey, (size_t)u64PublicKeyLen);
	encryptor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值