私はcrypto++ライブラリを使用してアプリケーションを書いています。慣れていない人のために、ECB_ModeテンプレートクラスはCipherModeBaseから継承します。プログラムはコンパイルされて実行されますが、取得した出力が正しくありません。暗号化メソッドをcipher_objectから呼び出すと、ECB_Modeオブジェクトを直接使用する場合と同じようには機能しません。オプションオブジェクトのインスタンス変数が正しく割り当てられていることを確認しました。if_then_else構造体またはswitch_case内にインスタンスを作成して、コードを適切にDRYに保つことができるようにします。私は何が間違っているのですか?
これが私が試していることですが、機能しません:
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++については比較的経験がありません。