共用方式為


NCryptKeyDerivation 函式 (ncrypt.h)

NCryptKeyDerivation 函式會使用指定的密鑰衍生函式,從另一個密鑰建立密鑰。 函式會傳回位元組陣列中的索引鍵。

語法

SECURITY_STATUS NCryptKeyDerivation(
  [in]  NCRYPT_KEY_HANDLE hKey,
  [in]  NCryptBufferDesc  *pParameterList,
  [out] PUCHAR            pbDerivedKey,
  [in]  DWORD             cbDerivedKey,
  [out] DWORD             *pcbResult,
  [in]  ULONG             dwFlags
);

參數

[in] hKey

密鑰衍生函式 (KDF) 金鑰的句柄。

[in] pParameterList

包含 KDF 參數的 NCryptBufferDesc 結構位址。 參數可以專屬於 KDF 或泛型。 下表顯示 Microsoft 軟體金鑰儲存提供者所實作之特定 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

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

[in] dwFlags

修改函式行為的旗標。 下列值可以與 Microsoft 軟體金鑰儲存提供者搭配使用。

意義
BCRYPT_CAPI_AES_FLAG
指定目標演算法是 AES,因此索引鍵必須加倍展開。 此旗標只適用於CAPI_KDF演算法。
NCRYPT_SILENT_FLAG
要求金鑰服務提供者 (KSP) 不會顯示任何使用者介面。 如果提供者必須顯示要運作的UI,呼叫會失敗,KSP應該將 NTE_SILENT_CONTEXT 錯誤碼設定為最後一個錯誤。

傳回值

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

可能的傳回碼包括但不限於下列專案。

傳回碼 Description
ERROR_SUCCESS
函式成功。
NTE_INVALID_HANDLE
hProviderhKey 句柄無效。
NTE_INVALID_PARAMETER
pwszDerivedKeyAlgpParameterList 參數不可為 NULL
NTE_NO_MEMORY
記憶體不足,無法建立金鑰。
NTE_NOT_SUPPORTED
金鑰儲存提供者不支援此函式。

備註

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

  • BCRYPT_CAPI_KDF_ALGORITHM
  • BCRYPT_SP800108_CTR_HMAC_ALGORITHM
  • BCRYPT_SP80056A_CONCAT_ALGORITHM
  • BCRYPT_PBKDF2_ALGORITHM

規格需求

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

另請參閱

BCryptKeyDerivation

NCryptDeriveKey