Алгоритм шифрования или дешифрования не сопоставлен с контекстом шифра
Этот дефект происходит, когда вы не присваиваете алгоритм шифра при подготовке контекста шифра.
Можно инициализировать контекст шифра без алгоритма. Однако, прежде чем вы шифруете или дешифруете свои данные, необходимо сопоставить контекст шифра с алгоритмом шифра.
Недостающий алгоритм шифра может привести к ошибкам времени выполнения или по крайней мере, незащищенный шифрованный текст.
Перед шифрованием или дешифрованием, вы настраиваете контекст шифра, которому потребовали информации для шифрования: алгоритм шифра и режим, ключ шифрования или ключ расшифровки и вектор инициализации (для режимов, которые требуют векторов инициализации).
ret = EVP_EncryptInit(&ctx, EVP_aes_128_cbc(), key, iv)
EVP_aes_128_cbc()
указывает, что алгоритм Усовершенствованного стандарта шифрования (AES) должен использоваться для шифрования. Функция также задает размер блока 128 битов и режим Cipher Bloch Chaining (CBC).Вместо того, чтобы задать алгоритм, можно использовать NULL на шаге инициализации. Однако перед использованием контекста шифра для шифрования или дешифрования, необходимо выполнить дополнительную инициализацию, которая сопоставляет алгоритм с контекстом. В противном случае шаги обновления для шифрования или дешифрования могут привести к ошибкам времени выполнения.
Перед вашими шагами шифрования или дешифрования
ret = EVP_EncryptUpdate(&ctx, out_buf, &out_len, src, len)
ctx
с алгоритмом.ret = EVP_EncryptInit(ctx, EVP_aes_128_cbc(), key, iv)
Группа: криптография |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки: CRYPTO_CIPHER_NO_ALGORITHM |
Удар: Средняя |
ID CWE: 310, 573 |