Вы выполняете шаги шифрования и дешифрования по очереди с тем же контекстом шифра без промежуточной реинициализации
Противоречивые операции шифра происходят, когда вы выполняете шаг шифрования и дешифрования с тем же контекстом шифра. Вы не повторно инициализируете контекст, промежуточный те шаги. Средство проверки применяется к симметричному шифрованию только.
Например, вы настраиваете контекст шифра для дешифрования с помощью EVP_DecryptInit_ex
.
EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);
EVP_EncryptUpdate
.EVP_EncryptUpdate(ctx, out_buf, &out_len, src, len);
Спутывание шагов шифрования и дешифрования может вести, чтобы затенить код. Трудно определить сразу, используется ли текущий контекст шифра для шифрования или дешифрования. Путаница может также привести к условиям состязания, отказавшему шифрованию и неожиданному шифрованному тексту.
После того, как вы настроите контекст шифра для определенного семейства операций, используйте контекст только для того семейства операций.
Например, если вы настраиваете контекст шифра для дешифрования с помощью EVP_DecryptInit_ex
, используйте контекст позже для дешифрования только.
Группа: криптография |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: CRYPTO_CIPHER_BAD_FUNCTION |
Влияние: носитель |
ID CWE: 372, 664 |