代码之家  ›  专栏  ›  技术社区  ›  Dark Sorrow

crypto++AES加密/解密对象重新初始化实践

  •  0
  • Dark Sorrow  · 技术社区  · 5 年前

    我使用以下文章作为参考: Example of AES using Crypto++ 使用微控制器(受限设备)通过通信通道(MQTT)实现端到端加密的AES-256。

    我正在开发C++中的服务器/控制器,可以在Linux或Windows机器上部署。在特定的会话中,在硬件终端上的用户活动(平均间隔约30-45秒),在微控制器和C++服务之间的消息以随机间隔(15秒到15分钟)交换。

    CryptoPP::AES::Encryption aesEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( aesEncryption, iv );
    CryptoPP::StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink( ciphertext ) );
    stfEncryptor.Put( reinterpret_cast<const unsigned char*>( plaintext.c_str() ), plaintext.length() );
    stfEncryptor.MessageEnd();
    

    我想知道重新初始化(重新创建对象)时的建议做法 aesEncryption cbcEncryption 对于每条消息,或者我可以在会话中重复使用它们。

    我还希望我应该多久更换一次IV和加密/解密密钥。更改IV是否会影响加密/解密?

    开发平台:x64 linux或x64 windows

    编译器:g++9.3.0或VC++16.5.0

    0 回复  |  直到 5 年前