CryptHashSessionKey 函数 (wincrypt.h)

重要 此 API 已弃用。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
 
CryptHashSessionKey 函数计算会话密钥对象的加密哈希。 可以使用同一哈希句柄多次调用此函数,以计算多个键的 哈希 。 对 CryptHashSessionKey 的调用可以穿插对 CryptHashData 的调用。

在调用此函数之前,必须调用 CryptCreateHash 来创建 哈希对象的句柄。

语法

BOOL CryptHashSessionKey(
  [in] HCRYPTHASH hHash,
  [in] HCRYPTKEY  hKey,
  [in] DWORD      dwFlags
);

参数

[in] hHash

哈希对象的句柄。

[in] hKey

要哈希处理的键对象的句柄。

[in] dwFlags

定义了以下标志值。

含义
CRYPT_LITTLE_ENDIAN
0x00000001
设置此标志时,密钥的字节以 little-endian 形式进行哈希处理。 请注意,默认情况下 (当 dwFlags 为零) 时,键的字节以 big-endian 格式进行哈希处理。

返回值

如果函数成功,则返回值为 TRUE

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

以“NTE”开头的错误代码由你使用的特定 CSP 生成。 下面是一些可能的错误代码。

返回代码 说明
ERROR_INVALID_HANDLE
其中一个参数指定无效的句柄。
ERROR_INVALID_PARAMETER
其中一个参数包含无效的值。 这通常是无效的指针。
NTE_BAD_ALGID
hHash 句柄指定此 CSP 不支持的算法。
NTE_BAD_FLAGS
dwFlags 参数为非零值。
NTE_BAD_HASH
hHash 参数指定的哈希对象无效。
NTE_BAD_HASH_STATE
尝试将数据添加到已标记为“已完成”的哈希对象。
NTE_BAD_KEY
正在使用键控哈希算法,但会话密钥不再有效。 如果在哈希操作完成之前销毁会话密钥,则会生成此错误。
NTE_BAD_UID
找不到创建哈希对象时指定的 CSP 上下文。
NTE_FAIL
函数以某种意外的方式失败。

要求

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

另请参阅

CryptCreateHash

CryptGenKey

CryptHashData

哈希和数字签名函数