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
計數器模式中的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 提供者搭配使用。
值 | 意義 |
---|---|
|
指定目標演算法是 AES,因此索引鍵必須展開兩倍。 此旗標僅適用於CAPI_KDF演算法。 |
傳回值
傳回狀態代碼,指出函式的成功或失敗。
備註
呼叫 BCryptKeyDerivation 之前,您可以在 BCryptOpenAlgorithmProvider 函式中使用下列演算法識別碼:
- BCRYPT_CAPI_KDF_ALGORITHM
- BCRYPT_SP800108_CTR_HMAC_ALGORITHM
- BCRYPT_SP80056A_CONCAT_ALGORITHM
- BCRYPT_PBKDF2_ALGORITHM
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | bcrypt.h |
程式庫 | Bcrypt.lib |
Dll | Bcrypt.dll |