DecryptMessage (NTLM) 函式會解密訊息。 某些套件不會加密和解密訊息,而是執行並檢查完整性 哈希。
備註
如果一個線程正在加密,另一個線程正在加密,另一個線程正在解密,則可以同時從單一安全性支援提供者介面 (SSPI) 內容中的兩個不同的線程呼叫 EncryptMessage (NTLM) 和 DecryptMessage (NTLM)。 如果一個以上的線程正在加密,或一個以上的線程正在解密,則每個線程都應該取得唯一的內容。
語法
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]
傳輸應用程式預期的序號,如果有的話。 如果傳輸應用程式未維護序號,此參數必須設定為零。
pfQOP [出局]
ULONG 類型的變數指標,會接收指出保護品質的套件特定旗標。
此參數可以是下列旗標。
| 價值 | 意義 |
|---|---|
|
SECQOP_WRAP_NO_ENCRYPT |
訊息未加密,但會產生標頭或預告片。 注意: KERB_WRAP_NO_ENCRYPT具有相同的值和相同的意義。 |
返回值
如果函式確認訊息是以正確的順序接收,函式會傳回SEC_E_OK。
如果函式無法解密訊息,它會傳回下列其中一個錯誤碼。
| 回傳碼 | 說明 |
|---|---|
| SEC_E_INCOMPLETE_MESSAGE | 輸入緩衝區中的數據不完整。 應用程式需要從伺服器讀取更多數據並再次調用 DecryptMessage (NTLM)。 |
| SEC_E_OUT_OF_SEQUENCE | 訊息未以正確的順序接收。 |
備註
有時候應用程式會從遠端合作物件讀取數據、嘗試使用 DecryptMessage (NTLM) 進行解密,並發現 DecryptMessage (NTLM) 成功,但輸出緩衝區是空的。 這是一般行為,而且應用程式必須能夠處理它。
Windows XP: 此函式也稱為 UnsealMessage。 應用程式現在應該只使用 DecryptMessage (NTLM)。
需求
| 要求 | 價值 |
|---|---|
| 最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
| 最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
| 頁首 | Sspi.h (包括 Security.h) |
| 圖書館 | Secur32.lib |
| DLL | Secur32.dll |