Расшифровка с помощью OpenSSL становится плохой расшифровкой (C ++) - PullRequest
0 голосов
/ 28 июня 2018

В настоящее время я использую метод AES-CBC-256 для расшифровки простой тестовой строки, которая зашифрована тем же методом через php openssl. Точная ошибка, которую я получаю, выглядит следующим образом:

11324:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:.\crypto\evp\evp_enc.c:531:

Код, используемый для расшифровки, следующий:

void handleErrors(void)
{
    ERR_print_errors_fp(stderr);
    abort();
}

int decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key, unsigned char *iv, unsigned char *plaintext)
{
    EVP_CIPHER_CTX *ctx;
    int len;
    int plaintext_len;
    if (!(ctx = EVP_CIPHER_CTX_new())) handleErrors();
    if (1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
        handleErrors();
    if (1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len))
        handleErrors();
    plaintext_len = len;
    if (1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len)) handleErrors();
    plaintext_len += len;
    EVP_CIPHER_CTX_free(ctx);
    return plaintext_len;
}

Я слышал, что это вызвано либо неправильным заполнением, либо попыткой расшифровать что-то, сгенерированное другой версией OpenSSL, поэтому я сохранил и 1.1.0h, и позволил OpenSSL использовать заполнение по умолчанию.

Я не думаю, что код дешифрования неправильный, так как он использовался для дешифрования файлов с соответствующим ключом и штрафом iv. Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...