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
Library Bcrypt.lib
DLL Bcrypt.dll

另请参阅

BCryptDeriveKey

NCryptKeyDerivation