我正在使用 crypto++ 库编写应用程序。对于那些不熟悉它的人,ECB_Mode 模板类继承自 CipherModeBase。该程序编译并运行,但我得到的输出不正确。当我从 cipher_object 调用加密方法时,它的工作方式与我直接使用 ECB_Mode 对象的方式不同。我已验证选项对象实例变量是否正确分配。我想在 if_then_else 结构或 switch_case 中创建实例,这样我就可以使代码保持良好和干燥。我究竟做错了什么?
这是我正在尝试但不起作用的方法:
CipherModeBase *cipher_object;
cipher_object == NULL;
if(options->cipher == BS_AES)
{
ECB_Mode<AES >::Encryption ecbEncryption(options->key, options->keylen);
cipher_object = &ecbEncryption;
}
else if(options->cipher == BS_TWOFISH)
{
ECB_Mode<Twofish >::Encryption ecbEncryption(options->key, options->keylen);
cipher_object = &ecbEncryption;
}
cipher_object->processData(args);
这是有效的:
ECB_Mode<AES >::Encryption ecbEncryption(options->key, options->keylen);
ecbEncryption.processData(args);
PS。我知道不要使用欧洲央行模式。在一切正常之前,我只是不想弄乱IV。我对 C++ 也相对缺乏经验。