内容纲要

C++ 下两大加密库, openssl 和 cryptopp,openssl 使用更广泛一些,不过编译起来得用命令行,且生成的都是动态库,不过接口是纯 C 的,调用方使用更方便一些; cryptopp 使用 C++ 模板编写,可编译为静态库使,不过使用不当,会莫名其妙的 crash。

cryptopp 的链式调用,new 出来的对象你看不到 delete,估计是调用方维持了指针,负责 delete。

字节缓冲区可用 std::vector 也可用自带的 ByteQueue 和 SecByteBlock。

最坑的是 AES 加解密已经不支持构造函数入参,得改变用

原始方式

CFB_Mode<AES>::Encryption cfbEncryption(key, key.size(), iv);

最新方式

CFB_Mode< AES >::Encryption e;
e.SetKeyWithIV(&key_block[0], key_block.size(), &iv_block[0]);

生成随机密钥

AutoSeededRandomPool rnd;
SecByteBlock key(AES::DEFAULT_KEYLENGTH);
rnd.GenerateBlock( key, key.size());

发表评论

电子邮件地址不会被公开。 必填项已用*标注