我使用以下文章作为参考:
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