Site icon EfmSoft

Что означает код HRESULT 0x80090012 (NTE_DOUBLE_ENCRYPT)?

 
Предыдущий Следующий
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.


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version