Die B64-dekodierte Ausgabe kann bei der aes256cbc-Entschlüsselung nicht als IV/Chiffretext verwendet werdenC++

Programme in C++. Entwicklerforum
Guest
 Die B64-dekodierte Ausgabe kann bei der aes256cbc-Entschlüsselung nicht als IV/Chiffretext verwendet werden

Post by Guest »

Ich kann die Ausgabe von EVP_DecodeBlock nicht als iv verwenden und den Chiffretext zur Entschlüsselung EVP_CIPHER_CTX verwenden.
Wenn ich das iv oder den Chiffretext durch manuelles Schreiben initialisiere (mit tatsächlichen Werten und nicht mit Nullen) :

Code: Select all

unsigned char iv[16] = {0x00, 0x00 ...};
unsigned char cipher[16] = {...};
und verwenden Sie sie als

Code: Select all

EVP_DecryptInit(ctx, EVP_aes_256_cbc(), key, iv));
EVP_DecryptUpdate(ctx, out, &len, cipher, 16); //out is declared as unsigned char out[2048]
Mit evp_decryptfinal kann ich das erforderliche Ergebnis erhalten. Wenn ich jedoch die iv und die Chiffre mit einer variablen Zeichenfolge wie folgt generiert habe:

Code: Select all

auto iv_stdstring = ((ciphers[i]["data"][j].toString()).split(".")[1])    //ciphers is a QJsonArray
.split("|")[0]
.toStdString();
auto iv_cstring = iv_stdstring.c_str();
unsigned char iv[16];
EVP_DecodeBlock(
iv, reinterpret_cast(const_cast(iv_cstring)),
strlen(iv_cstring));
Der EVP_DecryptFinal-Aufruf führt zu einem Fehler. Seltsamerweise funktioniert derselbe Code tatsächlich in einer anderen .cpp-Datei, wenn ich ihn manuell mit g++ kompiliere, aber er scheint in qt nicht zu funktionieren;
Der einzige Unterschied in dieser .cpp-Datei besteht darin, dass anstelle der auto-Schlüsselwort Ich habe gerade den Cstring wie folgt generiert:

Code: Select all

const char *iv_cstring = "(24 char long iv)";
aber selbst das funktioniert im QT-Code nicht. Ich habe auch die Hexadezimalzeichen in den Arrays gedruckt und sie stimmen mit dem überein, was benötigt wird.
Ich weiß nicht, wie derselbe Code in einer Instanz funktioniert und in der anderen nicht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post