Не удается расшифровать правильно сформированный зашифрованный текст с помощью Crypto ++

Фон

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

QString c = "1BFAC407AF0D440A2D6176C0B5D125AA96088490299AC18C74623C0EF1BB1372E554FC4150A8066220E943697BE2491D8AE13AA036B298425AC510A8A917D59EBB69708B9040AB3A84C63043EAD4AB07";
QString k = CryptoUtils::hexEncode("abc");
QString p = CryptoUtils::decrypt(c, k);

qDebug() << p;

При условии, что мы используем AES 256, AFAIK, ключ должен иметь длину 32 байта и зашифрованный текст длиной в 16 байтов, что соответствует всем этим условиям в отношении моего кода сниппета.

Обратите внимание, что я использую подачу SHA256 с парольной фразой для генерации 32-байтового ключа. Таким образом, это гарантирует, что все ключи имеют длину 32 байта.

Полные исходные коды из этих функций можно найти в моем репо на GitHub (в ветке Part1).

Мой вопрос

Когда я хочу запустить этот код, мое приложение падает. Вот исключение:

terminate called after throwing an instance of 'CryptoPP::InvalidCiphertext'
  what():  StreamTransformationFilter: invalid PKCS #7 block padding found
The program has unexpectedly finished.

Я искал вокруг этой проблемы и понял, что это может быть из-за\0 как только вы зашифровали простой текст. Однако я не мог просто решить проблему. Пожалуйста, помогите мне, это просто сводит меня с ума.

Ответы на вопрос(2)

Ваш ответ на вопрос