BCryptDeriveKeyPBKDF2 函数 (bcrypt.h)

BCryptDeriveKeyPBKDF2 函数使用 RFC 2898 定义的 PBKDF2 密钥派生算法从哈希值派生密钥。

语法

NTSTATUS BCryptDeriveKeyPBKDF2(
  [in]           BCRYPT_ALG_HANDLE hPrf,
  [in, optional] PUCHAR            pbPassword,
  [in]           ULONG             cbPassword,
  [in, optional] PUCHAR            pbSalt,
  [in]           ULONG             cbSalt,
  [in]           ULONGLONG         cIterations,
  [out]          PUCHAR            pbDerivedKey,
  [in]           ULONG             cbDerivedKey,
  [in]           ULONG             dwFlags
);

参数

[in] hPrf

提供伪随机函数的算法提供程序的句柄。 这应该是执行 消息身份验证代码 计算的算法提供程序。 使用默认的 Microsoft 算法提供程序时,可以使用使用 BCRYPT_ALG_HANDLE_HMAC_FLAG 标志打开的任何哈希算法

注意 只有实现 BCRYPT_IS_KEYED_HASH 属性的算法才能用于填充此参数。
 

[in, optional] pbPassword

指向缓冲区的指针,该缓冲区包含 PBKDF2 密钥派生算法的密码参数。

注意 密钥派生中使用的任何机密信息都应在此缓冲区中传递。

 

[in] cbPassword

pbPassword 参数指向的缓冲区中的数据的长度(以字节为单位)。

[in, optional] pbSalt

指向缓冲区的指针,该缓冲区包含 PBKDF2 密钥派生算法的 salt 参数。

注意 任何非机密且在密钥派生中使用的信息都应在此缓冲区中传递。
 

[in] cbSalt

pbSalt 参数指向的 salt 参数的长度(以字节为单位)。

[in] cIterations

PBKDF2 密钥派生算法的迭代计数。

[out] pbDerivedKey

指向接收派生密钥的缓冲区的指针。

[in] cbDerivedKey

pbDerivedKey 参数指向的缓冲区中返回的派生密钥的长度(以字节为单位)。

[in] dwFlags

此参数是保留的,必须设置为零。

返回值

返回指示函数成功或失败的状态代码。

可能的返回代码包括但不限于以下内容。

返回代码 说明
STATUS_SUCCESS
函数成功。
STATUS_INVALID_HANDLE
hPrf 参数中的句柄无效。
STATUS_INVALID_PARAMETER
一个或多个参数无效。
STATUS_NO_MEMORY
发生内存分配失败。

要求

要求
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 bcrypt.h
Library Bcrypt.lib
DLL Bcrypt.dll