共用方式為


DecryptMessage 函式 (sspi.h)

DecryptMessage (Digest) 函式會解密訊息。 某些套件不會加密和解密訊息,而是執行並檢查完整性 哈希

摘要 式安全性支援提供者 (SSP) 僅提供客戶端與伺服器之間交換之訊息的加密和解密機密性。

注意 如果其中一個線程正在加密,且另一個線程正在加密,則 SSPI) 內容中的 (兩個不同線程可以同時呼叫 EncryptMessage (Digest) DecryptMessage (Digest ) 。 如果一個以上的線程正在加密,或一個以上的線程正在解密,則每個線程都應該取得唯一的內容。
 

語法

SECURITY_STATUS SEC_ENTRY DecryptMessage(
  [in]      PCtxtHandle    phContext,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo,
  [out]     unsigned long  *pfQOP
);

參數

[in] phContext

要用來解密訊息 之安全性內容的 句柄。

[in, out] pMessage

SecBufferDesc 結構的指標。 在輸入時,結構會參考一或多個 SecBuffer 結構。 至少其中一個必須是類型SECBUFFER_DATA。 該緩衝區包含加密的訊息。 加密的訊息會就地解密,並覆寫其緩衝區的原始內容。

使用摘要式 SSP 時,在輸入時,結構會參考一或多個 SecBuffer 結構。 其中一個必須是類型SECBUFFER_DATA或SECBUFFER_STREAM,而且必須包含加密的訊息。

[in] MessageSeqNo

傳輸應用程式預期的序號,如果有的話。 如果傳輸應用程式未維護序號,此參數必須設定為零。

使用摘要式 SSP 時,此參數必須設定為零。 摘要式 SSP 會在內部管理序號。

[out] pfQOP

ULONG 類型的變數指標,可接收指出保護品質的套件特定旗標。

此參數可以是下列其中一個旗標。

意義
SECQOP_WRAP_NO_ENCRYPT
訊息未加密,但會產生標頭或預告片。
注意 KERB_WRAP_NO_ENCRYPT具有相同的值和相同的意義。
 
SIGN_ONLY
使用摘要式 SSP 時,當安全性內容設定為僅驗證 簽章 時,請使用此旗標。 如需詳細資訊,請參閱 保護品質

傳回值

如果函式確認訊息是以正確的順序接收,函式會傳回SEC_E_OK。

如果函式無法解密訊息,它會傳回下列其中一個錯誤碼。

傳回碼 Description
SEC_E_BUFFER_TOO_SMALL
訊息緩衝區太小。 與摘要 SSP 搭配使用。
SEC_E_CRYPTO_SYSTEM_INVALID
不支援為安全性內容選擇的加密。 與摘要 SSP 搭配使用。
SEC_E_INCOMPLETE_MESSAGE
輸入緩衝區中的數據不完整。 應用程式需要從伺服器讀取更多數據,並再次呼叫 DecryptMessage (Digest)
SEC_E_INVALID_HANDLE
phContext 參數中指定了無效的內容句柄。 與摘要 SSP 搭配使用。
SEC_E_MESSAGE_ALTERED
訊息已改變。 與摘要 SSP 搭配使用。
SEC_E_OUT_OF_SEQUENCE
訊息未以正確的順序接收。
SEC_E_QOP_NOT_SUPPORTED
安全性內容不支持機密性和 完整性 。 與摘要 SSP 搭配使用。

備註

有時候應用程式會從遠端合作物件讀取數據、嘗試使用 DecryptMessage (Digest) 進行解密,並發現 DecryptMessage (Digest) 成功,但輸出緩衝區是空的。 這是正常行為,而且應用程式必須能夠加以處理。

Windowsxp: 此函式也稱為 UnsealMessage。 應用程式現在應該只使用 DecryptMessage (Digest)

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 sspi.h (包含 Security.h)
程式庫 Secur32.lib
Dll Secur32.dll

另請參閱

EncryptMessage (摘要)

SSPI 函式

SecBuffer

SecBufferDesc