共用方式為


CryptDecryptMessage 函式 (wincrypt.h)

CryptDecryptMessage函式會解碼解密訊息。

語法

BOOL CryptDecryptMessage(
  [in]                PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
  [in]                const BYTE                  *pbEncryptedBlob,
  [in]                DWORD                       cbEncryptedBlob,
  [out, optional]     BYTE                        *pbDecrypted,
  [in, out, optional] DWORD                       *pcbDecrypted,
  [out, optional]     PCCERT_CONTEXT              *ppXchgCert
);

參數

[in] pDecryptPara

包含解密參數 之CRYPT_DECRYPT_MESSAGE_PARA 結構的指標。

[in] pbEncryptedBlob

緩衝區的指標,其中包含要解密 的編碼加密 訊息。

[in] cbEncryptedBlob

編碼和加密訊息的大小,以位元組為單位。

[out, optional] pbDecrypted

接收解密訊息之緩衝區的指標。

若要針對記憶體配置目的設定這項資訊的大小,此參數可以是 Null。 如果此參數為 Null,則不會傳回解密的訊息。 如需詳細資訊,請參閱 擷取未知長度的資料

[in, out, optional] pcbDecrypted

DWORD的指標,指定pbDecrypted參數所指向之緩衝區的大小,以位元組為單位。 當函式傳回時,此變數會包含已解密訊息的大小,以位元組為單位,複製到 pbDecrypted

注意 處理 pbDecrypted 緩衝區中傳回的資料時,應用程式必須使用傳回之資料的實際大小。 實際大小可以稍微小於輸入上 在輸入上于@decrypted 中指定的緩衝區大小。 在輸入上,緩衝區大小通常會指定夠大,以確保最大可能的輸出資料會容納在緩衝區中。 輸出時, DWORD 會更新為複製到緩衝區之資料的實際大小。
 

[out, optional] ppXchgCert

憑證 CERT_CONTEXT結構的指標 ,該 憑證 會對應至解密 訊息所需的私密金鑰 。 若要指出函式不應該傳回用來解密的 憑證內容 ,請將此參數設定為 Null

傳回值

如果函式成功,函式會傳回非零 (TRUE) 。

如果函式失敗,它會傳回零 (FALSE) 。 如需擴充錯誤資訊,請呼叫 GetLastError

注意 來自對 CryptImportKeyCryptDecrypt 呼叫的錯誤可能會傳播至此函式。
 
GetLastError函式最常傳回下列錯誤碼。
傳回碼 描述
ERROR_MORE_DATA
如果 pbDecrypted 參數指定的緩衝區不夠大,無法保存傳回的資料,則函式會設定ERROR_MORE_DATA程式碼,並將所需的緩衝區大小以位元組為單位儲存在 由bsDecrypted所指向的變數中。
E_INVALIDARG
不正確訊息和 憑證編碼類型。 目前僅支援PKCS_7_ASN_ENCODING和X509_ASN_ENCODING_TYPE。 *pDecryptPara中的cbSize無效。
CRYPT_E_UNEXPECTED_MSG_TYPE
不是 信封密碼編譯 訊息。
NTE_BAD_ALGID
訊息已使用未知或不支援的演算法進行加密。
CRYPT_E_NO_DECRYPT_CERT
找不到憑證具有用於解密的 私密金鑰 屬性。
 

如果函式失敗, GetLastError 可能會傳回 抽象語法標記法一 (ASN.1) 編碼/解碼錯誤。 如需這些錯誤的相關資訊,請參閱 ASN.1 編碼/解碼傳回值

備註

針對 pbDecrypted傳遞Null,而sslDecrypted不是Null時,會針對在 ppXchgCert中傳遞的位址傳回Null;否則,會傳回CERT_CONTEXT的指標。 針對成功解密的訊息, CERT_CONTEXT 指向用來解密訊息的 憑證內容 。 它必須透過呼叫 CertFreeCertificateCoNtext來釋出。 如果函式失敗, ppXchgCert 的值會設定為 Null

範例

如需使用此函式的範例,請參閱 範例 C 程式:使用 CryptEncryptMessage 和 CryptDecryptMessage

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CryptDecryptAndVerifyMessageSignature

簡化的訊息函式