NCryptProtectSecret 函数 (ncryptprotect.h)

NCryptProtectSecret 函数将数据加密到指定的保护描述符。 调用 NCryptUnprotectSecret 来解密数据。

语法

SECURITY_STATUS NCryptProtectSecret(
  [in]           NCRYPT_DESCRIPTOR_HANDLE hDescriptor,
  [in]           DWORD                    dwFlags,
  [in]           const BYTE               *pbData,
  [in]           ULONG                    cbData,
  [in, optional] const NCRYPT_ALLOC_PARA  *pMemPara,
  [in, optional] HWND                     hWnd,
  [out]          BYTE                     **ppbProtectedBlob,
  [out]          ULONG                    *pcbProtectedBlob
);

参数

[in] hDescriptor

保护描述符对象的句柄。 通过调用 NCryptCreateProtectionDescriptor 创建句柄。

[in] dwFlags

标志可以是零或以下值。

含义
NCRYPT_SILENT_FLAG
请求密钥服务提供程序不显示用户界面。

[in] pbData

指向要保护的字节数组的指针。

[in] cbData

pbData 参数指定的二进制数组中的字节数。

[in, optional] pMemPara

指向可用于指定自定义内存管理功能 的NCRYPT_ALLOC_PARA 结构的指针。 如果将此参数设置为 NULL则 LocalAlloc 函数在内部用于分配内存,并且应用程序必须调用 LocalFree 来释放 ppbProtectedBlob 参数指向的内存。

[in, optional] hWnd

要显示的用户界面的父窗口的句柄(如果有)。

[out] ppbProtectedBlob

接收指向加密数据的指针的变量的地址。

[out] pcbProtectedBlob

指向 ULONG 变量的指针,该变量包含 ppbProtectedBlob 变量指向的加密数据的大小(以字节为单位)。

返回值

返回指示函数成功或失败的状态代码。 可能的返回代码包括但不限于以下内容。

返回代码 说明
ERROR_SUCCESS
函数成功。
NTE_INVALID_PARAMETER
pbDatappbProtectedBlobbblob 参数不能为 NULL

cbData 参数不能小于 1。

NTE_NO_MEMORY
内存不足,无法分配内容加密密钥。
NTE_INVALID_HANDLE
hDescriptor 参数指定的句柄无效。

注解

使用 NCryptProtectSecret 函数保护密钥、密钥材料和密码。 使用 NCryptStreamOpenToProtectNCryptStreamUpdate 函数加密较大的消息。

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 ncryptprotect.h
Library NCrypt.lib
DLL NCrypt.dll

另请参阅

CNG DPAPI 函数

NCryptCreateProtectionDescriptor

NCryptUnprotectSecret