DecryptMessage(NTLM) 함수

DecryptMessage(NTLM) 함수는 메시지의 암호를 해독합니다. 일부 패키지는 메시지를 암호화 및 암호 해독하는 것이 아니라 무결성 해시를 수행하고 검사.

참고

한 스레드가 암호화되고 다른 스레드가 암호를 해독하는 경우 NTLM(EncryptMessage)DecryptMessage(NTLM)는 단일 SSPI(보안 지원 공급자 인터페이스) 컨텍스트의 두 스레드에서 동시에 호출할 수 있습니다. 둘 이상의 스레드가 암호화 중이거나 둘 이상의 스레드가 암호를 해독하는 경우 각 스레드는 고유한 컨텍스트를 가져와야 합니다.

구문

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

매개 변수

phContext [in]

메시지의 암호를 해독하는 데 사용할 보안 컨텍스트 에 대한 핸들입니다.

pMessage [in, out]

SecBufferDesc 구조체에 대한 포인터입니다. 입력 시 구조체는 하나 이상의 SecBuffer 구조를 참조합니다. 이들 중 하나 이상이 SECBUFFER_DATA 형식이어야 합니다. 해당 버퍼에는 암호화된 메시지가 포함됩니다. 암호화된 메시지는 현재 위치에서 암호 해독되어 버퍼의 원래 내용을 덮어씁니다.

MessageSeqNo [in]

전송 애플리케이션에 필요한 시퀀스 번호(있는 경우)입니다. 전송 애플리케이션에서 시퀀스 번호를 유지하지 않는 경우 이 매개 변수를 0으로 설정해야 합니다.

pfQOP [out]

보호 품질을 나타내는 패키지별 플래그를 수신하는 ULONG 형식의 변수에 대한 포인터입니다.

이 매개 변수는 다음 플래그일 수 있습니다.

의미
SECQOP_WRAP_NO_ENCRYPT
메시지는 암호화되지 않았지만 헤더 또는 트레일러가 생성되었습니다.
참고: KERB_WRAP_NO_ENCRYPT 값과 의미가 동일합니다.

반환 값

함수가 메시지가 올바른 순서로 수신되었는지 확인하면 함수는 SEC_E_OK 반환합니다.

함수가 메시지의 암호를 해독하지 못하면 다음 오류 코드 중 하나를 반환합니다.

반환 코드 설명
SEC_E_INCOMPLETE_MESSAGE 입력 버퍼의 데이터가 불완전합니다. 애플리케이션은 서버에서 더 많은 데이터를 읽고 DecryptMessage(NTLM)를 다시 호출해야 합니다.
SEC_E_OUT_OF_SEQUENCE 메시지가 올바른 순서로 수신되지 않았습니다.

설명

경우에 따라 애플리케이션은 원격 당사자로부터 데이터를 읽고, NTLM(DecryptMessage)을 사용하여 암호를 해독하려고 시도하고, NTLM(DecryptMessage) 이 성공했지만 출력 버퍼가 비어 있음을 발견합니다. 이는 정상적인 동작이며 애플리케이션에서 처리할 수 있어야 합니다.

Windows XP: 이 함수를 UnsealMessage라고도 합니다. 이제 애플리케이션은 NTLM(DecryptMessage) 만 사용해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
헤더 Sspi.h(Security.h 포함)
라이브러리 Secur32.lib
DLL Secur32.dll

추가 정보