我正在使用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模式。我只是不想混淆四,直到我可以讓一切工作。我對C++也比較缺乏經驗。
謝謝!有效。比較運算符的好處,也許是休息一下的時間... – user1456786
您還需要記住在完成使用後「刪除cipher_object」。 –