Расшифровка std :: string имеет дополнительные байты заполнения?

Я пытаюсь расшифровать строку, которая зашифрована с использованием AES в CBC_Mode. Я вижу правильные данные в результате, но он загрязнен байтами заполнения.
Моя первая попытка состояла в том, чтобы использовать Redirector как предложено в этот нить:

std::string result_;
CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption decrypt_;
...

void decrypt(std::string cipheredText)
{
try
{
CryptoPP::MeterFilter meter(new CryptoPP::StringSink(result_));

CryptoPP::StringSource pipeline(
cipheredText,
true,
new CryptoPP::StreamTransformationFilter(
decrypt_,
new CryptoPP::Redirector(meter),
CryptoPP::StreamTransformationFilter::PKCS_PADDING));
}
catch (CryptoPP::Exception&)
{ }
}

Но я все еще получаю эти байты заполнения. Что я делаю неправильно? Может кто-то помочь мне, пожалуйста?

1

Решение

Хорошо, наконец я нашел свою глупую ошибку. Это не имеет ничего общего с байтами заполнения. Причиной наличия этих дополнительных байтов в моем результате расшифровки является то, что
StringSource добавляет результирующие байты к месту назначения. Я забыл очистить переменную назначения, и она выросла …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]