Я пишу приложение, используя библиотеку 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. Я не знаю, как использовать режим ECB. Я просто не хочу возиться с IV, пока не смогу заставить все работать. Я также относительно неопытен с C++.
Спасибо! Это сработало. Хороший улов на операторе сравнения, возможно, его время, чтобы сделать перерыв ... – user1456786
После того, как вы закончите использовать его, вам также нужно будет запомнить «удалить cipher_object». –