| Предыдущий | Следующий |
| NTE_NOT_FOUND | NTE_BAD_PROVIDER |
NTE_DOUBLE_ENCRYPT
NTE_DOUBLE_ENCRYPT (0x80090012) — ошибка CryptoAPI, которая для CryptDecrypt означает повторную попытку расшифровать те же данные в том же криптографическом контексте. Это не сообщение о «слишком сильном шифровании»: проблема возникает в состоянии вызовов приложения.
Что означает ошибка
CryptDecrypt изменяет переданный буфер на месте и обновляет внутреннее состояние ключа. Если программа повторно передаёт уже обработанный буфер или повторяет финальный шаг расшифрования после неудачно организованного retry, поставщик может определить двойную обработку и вернуть NTE_DOUBLE_ENCRYPT.
Что проверить
- Проследите жизненный цикл входного буфера: одни и те же зашифрованные байты не должны дважды проходить через
CryptDecryptбез восстановления исходного ciphertext и состояния ключа. - Для потокового расшифрования проверьте значение параметра
Final. Финальный вызов должен выполняться один раз только для последнего фрагмента сообщения. - Если код повторяет операцию после ошибки, убедитесь, что retry начинается с неизменённой копии шифротекста и корректно переинициализированного ключевого состояния.
- Проверьте ownership буфера между слоями приложения: callback, wrapper или обработчик исключения не должен незаметно вызывать расшифрование повторно для уже обработанного блока.
См. документацию Microsoft по CryptDecrypt.
Нужно найти другой код? Найти другой код состояния или ошибки.