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

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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值