Tener problemas para descifrar un texto cifrado bien formado usando Crypto ++

Antecedentes

He estado luchando para descifrar un texto cifrado aparentemente bien formado durante aproximadamente un día. Supongamos que tenemos el siguiente texto cifrado codificado en hexadecimal que contiene exactamente 160 caracteres, por lo que tiene 80 bytes.

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

qDebug() << p;

Siempre que usemos AES 256, AFAIK, la clave debe tener una longitud de 32 bytes y un texto cifrado de una longitud de múltiplo de 16 bytes, que se cumplen todas estas condiciones con respecto a mi código de fragmento.

Tenga en cuenta que estoy usando la alimentación SHA256 con una frase de paso para generar una clave de 32 bytes. Por lo tanto, esto garantiza que todas las claves tengan una longitud de 32 bytes.

Códigos fuente completos de esas funciones se pueden encontrar en mi repositorio en GitHub (en la rama Parte1).

Mi pregunta

Cuando quiero ejecutar este código, mi aplicación se bloquea. Aquí está la excepción:

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

Busqué alrededor de este problema y descubrí que podría deberse a los errores\0 una vez que encriptaste el texto plano. Sin embargo, no pude resolver el problema. Por favor, ayúdame, me está volviendo loco.

Respuestas a la pregunta(2)

Su respuesta a la pregunta