共用方式為


EncryptMessage (NTLM) 函式

EncryptMessage (NTLM) 函式會加密訊息以提供隱私權EncryptMessage (NTLM) 可讓應用程式在所選機制支援的密碼 編譯演演算法 之間進行選擇。 EncryptMessage (NTLM) 函式會使用內容句柄所參考的安全性內容。 某些套件沒有要加密或解密的訊息,而是提供可檢查的完整性 哈希

備註

如果一個線程正在加密,另一個線程正在加密,另一個線程正在解密,則可以同時從單一安全性支援提供者介面 (SSPI) 內容中的兩個不同的線程呼叫 EncryptMessage (NTLM) 和 DecryptMessageNTLM)。 如果一個以上的線程正在加密,或一個以上的線程正在解密,則每個線程都應該取得唯一的內容。

語法

SECURITY_STATUS SEC_Entry EncryptMessage(
  _In_    PCtxtHandle    phContext,
  _In_    ULONG          fQOP,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo
);

參數

phContext [in]

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

fQOP [in]

指出保護品質的套件特定旗標。 安全性套件可以使用此參數來啟用密碼編譯演算法的選擇。

此參數可以是下列旗標。

價值 意義
SECQOP_WRAP_NO_ENCRYPT
產生標頭或預告片,但不會加密訊息。
注意: KERB_WRAP_NO_ENCRYPT具有相同的值和相同的意義。

pMessage [in, out]

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

函式不會使用 SECBUFFER_READONLY 屬性處理緩衝區。

包含訊息的 SecBuffer 結構的長度不得大於 cbMaximumMessage,這是從 QueryContextAttributes (NTLM) ( SECPKG_ATTR_STREAM_SIZES) 函式取得的。

不使用 SSL 的應用程式必須提供類型為 SECBUFFER_PADDING 的 SecBuffer

MessageSeqNo [in]

傳輸應用程式指派給訊息的序號。 如果傳輸應用程式未維護序號,此參數必須為零。

返回值

如果函式成功,函式會傳回SEC_E_OK。

如果函式失敗,它會傳回下列其中一個錯誤碼。

回傳碼 說明
SEC_E_BUFFER_TOO_SMALL 輸出緩衝區太小。 如需詳細資訊,請參閱。
SEC_E_CONTEXT_EXPIRED 應用程式正在參考已經關閉的內容。 正確寫入的應用程式不應該收到此錯誤。
SEC_E_CRYPTO_SYSTEM_INVALID 不支援為安全性內容選擇的加密
SEC_E_INSUFFICIENT_MEMORY 記憶體不足,無法完成要求的動作。
SEC_E_INVALID_HANDLE 在 phContext 參數中指定了無效的內容句柄。
SEC_E_INVALID_TOKEN 找不到SECBUFFER_DATA類型緩衝區。
SEC_E_QOP_NOT_SUPPORTED> 安全性內容不支持機密性和完整性

備註

EncryptMessage (NTLM) 函式會根據來自安全性內容的訊息和會話密鑰來加密訊息。

如果傳輸應用程式建立 安全性內容 以支援順序偵測,而呼叫端會提供序號,則函式會包含此資訊與加密的訊息。 包含這項資訊可防止重新執行、插入和隱藏訊息。 安全性套件會納入從傳輸應用程式傳遞的序號。

備註

這些緩衝區必須依顯示的順序提供。

緩衝區類型 說明
SECBUFFER_STREAM_HEADER 在內部使用。 不需要初始化。
SECBUFFER_DATA 包含要加密的 純文字 訊息。
SECBUFFER_STREAM_TRAILER 在內部使用。 不需要初始化。
SECBUFFER_EMPTY 在內部使用。 不需要初始化。 大小可以是零。

為了獲得最佳效能,應該從連續記憶體配置 pMessage 結構。

Windows XP: 此函式也稱為 SealMessage。 應用程式現在應該只使用 EncryptMessage (NTLM)。

需求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
頁首 Sspi.h (包括 Security.h)
圖書館 Secur32.lib
DLL Secur32.dll

另請參閱