Crypto++ を使用してテキストを暗号化しようとしています。前回は AES CTR を使用したときはうまくいきましたが、CBC または GCM を使用する場合、使用できるキーの最大長は 32 ビットですか??
暗号化を処理するコード:
string xAESPlain, xAESCipher;
AutoSeededRandomPool xRng;
byte xAESKey[128]; // Doesnt Work has to be 32 or 16
byte xAESIv[128];
xRng.GenerateBlock(xAESKey, sizeof(xAESKey));
xRng.GenerateBlock(xAESIv, sizeof(xAESIv));
CBC_Mode< AES >::Encryption E;
E.SetKeyWithIV(xAESKey, sizeof(xAESKey), xAESIv);
StringSource ss(xAESPlain, true,
new StreamTransformationFilter(E,
new StringSink(xAESCipher)
)
);
この Crypto++ を実行すると、次のものがスローされますException
。
terminate called after throwing an instance of 'CryptoPP::InvalidKeyLength'
what(): AES/CBC: 128 is not a valid key length
Wiki で提供されている example.zip を使用する場合 (およびキーの長さを 256 または 128 に変更する場合) に同じことが起こることに注意してください。
Exception
がスローされている理由はありますか?