Невозможно использовать декодированный вывод B64 в качестве IV/зашифрованного текста при расшифровке aes256cbc.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно использовать декодированный вывод B64 в качестве IV/зашифрованного текста при расшифровке aes256cbc.

Сообщение Anonymous »

Я не могу использовать выходные данные EVP_DecodeBlock в качестве iv, а зашифрованный текст для расшифровки используйте EVP_CIPHER_CTX.
Когда я инициализирую iv или зашифрованный текст вручную (с фактическими значениями, а не 00) :

Код: Выделить всё

unsigned char iv[16] = {0x00, 0x00 ...};
unsigned char cipher[16] = {...};
и используйте их как

Код: Выделить всё

EVP_DecryptInit(ctx, EVP_aes_256_cbc(), key, iv));
EVP_DecryptUpdate(ctx, out, &len, cipher, 16); //out is declared as unsigned char out[2048]
Я могу получить требуемый результат, используя evp_decryptfinal. Однако, когда у меня есть iv и шифр, сгенерированные с использованием переменной строки, как:

Код: Выделить всё

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));
Ошибки вызова EVP_DecryptFinal. Как ни странно, тот же код на самом деле работает в другом файле .cpp, когда я компилирую его вручную с помощью g++, но, похоже, не работает в qt;
Единственное отличие в этом файле .cpp заключается в том, что вместо использования Ключевое слово auto Я только что сгенерировал cstring следующим образом:

Код: Выделить всё

const char *iv_cstring = "(24 char long iv)";
но даже это не работает в qt-коде. Я также напечатал шестнадцатеричные символы в массивах, и они соответствуют тому, что нужно.
Я очень не понимаю, как один и тот же код работает в одном случае, а не в другом.

Подробнее здесь: https://stackoverflow.com/questions/793 ... decryption
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»