Share via


BCryptKeyDerivation 函式 (bcrypt.h)

BCryptKeyDerivation 函式會衍生密鑰,而不需要秘密協定。 其功能類似於 BCryptDeriveKey ,但不需要BCRYPT_SECRET_HANDLE值作為輸入。

語法

NTSTATUS BCryptKeyDerivation(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] BCryptBufferDesc  *pParameterList,
  [out]          PUCHAR            pbDerivedKey,
  [in]           ULONG             cbDerivedKey,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

參數

[in] hKey

輸入索引鍵的句柄。

[in, optional] pParameterList

包含 KDF 參數的 BCryptBufferDesc 結構的指標。 此參數是選擇性的,如果不需要,它可以是 NULL 。 參數可以是金鑰衍生函式的特定參數, (KDF) 或泛型。 下表顯示 Microsoft Primitive 提供者所實作之特定 KDF 的必要和選擇性參數。

KDF 參數 必要
計數器模式中的SP800-108 HMAC KDF_LABEL
KDF_CONTEXT
KDF_HASH_ALGORITHM
SP800-56A KDF_ALGORITHMID
KDF_PARTYUINFO
KDF_PARTYVINFO
KDF_HASH_ALGORITHM
KDF_SUPPPUBINFO
KDF_SUPPPRIVINFO
PBKDF2 KDF_HASH_ALGORITHM
KDF_SALT
KDF_ITERATION_COUNT
CAPI_KDF KDF_HASH_ALGORITHM
 

您可以使用下列泛型參數:

  • KDF_GENERIC_PARAMETER
泛型參數會以下列方式對應至 KDF 特定參數:

計數器模式中的SP800-108 HMAC:

  • KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT

SP800-56A

  • KDF_GENERIC_PARAMETER = KDF_ALGORITHMID ||KDF_PARTYUINFO ||KDF_PARTYVINFO {||KDF_SUPPPUBINFO } {||KDF_SUPPPRIVINFO }

PBKDF2

  • KDF_GENERIC_PARAMETER = KDF_SALT
  • KDF_ITERATION_COUNT – 預設值為 10000

CAPI_KDF

  • KDF_GENERIC_PARAMETER = 未使用

[out] pbDerivedKey

接收金鑰的緩衝區位址。 cbDerivedKey 參數包含此緩衝區的大小。

[in] cbDerivedKey

pbDerivedKey 參數所指向之緩衝區的大小,以位元組為單位。

[out] pcbResult

變數的指標,該變數會接收 pbDerivedKey 參數所指向之緩衝區所複製的位元組數目。

[in] dwFlags

修改此函式行為的旗標。 下列值可以與 Microsoft Primitive 提供者搭配使用。

意義
BCRYPT_CAPI_AES_FLAG
指定目標演算法是 AES,因此索引鍵必須展開兩倍。 此旗標僅適用於CAPI_KDF演算法。

傳回值

傳回狀態代碼,指出函式的成功或失敗。

備註

呼叫 BCryptKeyDerivation 之前,您可以在 BCryptOpenAlgorithmProvider 函式中使用下列演算法識別碼:

  • BCRYPT_CAPI_KDF_ALGORITHM
  • BCRYPT_SP800108_CTR_HMAC_ALGORITHM
  • BCRYPT_SP80056A_CONCAT_ALGORITHM
  • BCRYPT_PBKDF2_ALGORITHM
若要在核心模式中呼叫此函式,請使用 Cng.lib,這是驅動程式開發工具包 (DDK) 的一部分。 Windows Server 2008 和 Windows Vista: 若要在核心模式中呼叫此函式,請使用 Ksecdd.lib。

規格需求

需求
最低支援的用戶端 Windows 8 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 bcrypt.h
程式庫 Bcrypt.lib
Dll Bcrypt.dll

另請參閱

BCryptDeriveKey

NCryptKeyDerivation