cryptDestroyKey 函数 (wincrypt.h)

重要 此 API 已弃用。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
 
CryptDestroyKey 函数释放 hKey 参数引用的句柄。 释放密钥句柄后,它不再有效,不能再次使用。

如果句柄引用会话密钥,或已导入加密 服务提供程序 (CSP) 通过 CryptImportKey 的公钥,则此函数会销毁密钥并释放该密钥使用的内存。 许多 CSP 会在释放密钥之前覆盖保存密钥的内存。 但是,此函数不会销毁基础 公钥/私钥对 。 仅销毁句柄。

语法

BOOL CryptDestroyKey(
  [in] HCRYPTKEY hKey
);

参数

[in] hKey

要销毁的密钥的句柄。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 有关扩展的错误信息,请调用 GetLastError

以“NTE”开头的错误代码由使用的特定 CSP 生成。 下表列出了一些可能的错误代码。

返回代码 说明
ERROR_BUSY
hKey 指定的密钥对象当前正在使用,无法销毁。
ERROR_INVALID_HANDLE
hKey 参数指定无效的句柄。
ERROR_INVALID_PARAMETER
hKey 参数包含无效的值。
NTE_BAD_KEY
hKey 参数不包含密钥的有效句柄。
NTE_BAD_UID
找不到创建密钥时指定的 CSP 上下文。

注解

密钥同时占用操作系统的内存空间和 CSP 的内存空间。 某些 CSP 是在内存资源有限的硬件中实现的。 应用程序必须在使用 CryptDestroyKey 函数时销毁所有密钥。

在使用 CryptReleaseContext 函数释放该 CSP 句柄之前,必须先销毁使用特定 CSP 创建或导入的所有密钥句柄。

示例

有关使用 CryptDestroyKey 函数的示例,请参阅 示例 C 程序:创建和哈希处理会话密钥

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 wincrypt.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

CryptDeriveKey

CryptGenKey

CryptGetUserKey

CryptImportKey

密钥生成和交换函数