robleme beim Entschlüsseln eines wohlgeformten Chiffretexts mit Crypto

Hintergrun

Ich habe seit ungefähr einem Tag Probleme damit, einen anscheinend gut geformten Chiffretext zu entschlüsseln. Angenommen, wir haben den folgenden hexadezimalen Chiffretext, der genau 160 Zeichen enthält und dabei 80 Bytes hat.

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

qDebug() << p;

Vorausgesetzt, wir verwenden AES 256, AFAIK, der Schlüssel muss 32 Byte lang und der Chiffretext ein Vielfaches von 16 Byte lang sein, was alle diese Bedingungen in Bezug auf meinen Snippet-Code erfüllt.

Bitte beachten Sie, dass ich SHA256-Feeding mit einer Passphrase verwende, um einen 32-Byte-Schlüssel zu generieren. Auf diese Weise wird sichergestellt, dass alle Schlüssel 32 Byte lang sind.

Volle Quellcodes dieser Funktion finden Sie in meinem Repo auf GitHub (in Zweigstelle Teil1).

Meine Frag

Wenn ich diesen Code ausführen möchte, stürzt meine App ab. Hier ist die Ausnahme:

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

Ich habe nach diesem Problem gesucht und herausgefunden, dass es an dem nachgestellten @ liegen könnt\0 sobald Sie den Klartext verschlüsselt haben. Ich konnte das Problem jedoch nicht einfach lösen. Bitte helfen Sie mir, es macht mich nur verrückt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage