NCryptUnprotectSecret 函数 (ncryptprotect.h)

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

语法

SECURITY_STATUS NCryptUnprotectSecret(
  [out, optional] NCRYPT_DESCRIPTOR_HANDLE *phDescriptor,
  [in]            DWORD                    dwFlags,
  [in]            const BYTE               *pbProtectedBlob,
                  ULONG                    cbProtectedBlob,
  [in, optional]  const NCRYPT_ALLOC_PARA  *pMemPara,
  [in, optional]  HWND                     hWnd,
  [out]           BYTE                     **ppbData,
  [out]           ULONG                    *pcbData
);

参数

[out, optional] phDescriptor

指向保护描述符句柄的指针。

[in] dwFlags

标志可以是零,也可以是以下值的按位 OR。

含义
NCRYPT_SILENT_FLAG
请求密钥服务提供程序不显示用户界面。
NCRYPT_UNPROTECT_NO_DECRYPT
仅解码受保护数据 Blob 的标头。 不会进行实际解密。

[in] pbProtectedBlob

指向包含要解密的数据的字节数组的指针。

cbProtectedBlob

pbProtectedBlob 参数指向的数组中的字节数。

[in, optional] pMemPara

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

[in, optional] hWnd

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

[out] ppbData

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

[out] pcbData

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

返回值

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

返回代码 说明
ERROR_SUCCESS
函数成功。
NTE_BAD_FLAGS
dwFlags 参数只能包含 NCRYPT_SILENT_FLAGNCRYPT_UNPROTECT_NO_DECRYPT
NTE_INVALID_PARAMETER
pbProtectedBlobppbDatapbData 参数不能为 NULL

cbData 参数不能小于 1。

注解

使用 NCryptUnprotectSecret 函数解密密钥、密钥材料和密码。 使用 NCryptStreamOpenToUnprotectNCryptStreamUpdate 函数解密较大的消息。

要求

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

另请参阅

CNG DPAPI 函数

NCryptProtectSecret