cryptopp 加解密的坑

C++ 下兩大加密庫, openssl 和 cryptopp,openssl 使用更廣泛一些,不過編譯起來得用命令行,且生成的都是動態庫,不過接口是純 C 的,調用方使用更方便一些; cryptopp 使用 C++ 模板編寫,可編譯為靜態庫使,不過使用不當,會莫名其妙的 crash。

cryptopp 的鏈式調用,new 出來的對象你看不到 delete,估計是調用方維持了指針,負責 delete。

字節緩沖區可用 std::vector<byte> 也可用自帶的 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());
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,098評論 25 708
  • 接著上節 condition_varible ,本節主要介紹future的內容,練習代碼地址。本文參考http:/...
    jorion閱讀 14,822評論 1 5
  • 素質,真的與職業、學歷、年齡、身份無關…………有的人身體不完整,但靈魂是完整且崇高的;有的人身體是完整的,...
    真水無香eqq閱讀 230評論 0 1
  • 人生的大部分時候無非就是我們自己把自己困住了,或是逃避,或是害怕,種種的心態都是自己施加給自己的,所以,成為別...
    凝生閱讀 230評論 0 1