CryptGetHashParam 函数 (wincrypt.h)

重要 此 API 已弃用。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
 
CryptGetHashParam 函数检索控制哈希对象操作的数据。 可以使用此函数检索实际哈希值。

语法

BOOL CryptGetHashParam(
  [in]      HCRYPTHASH hHash,
  [in]      DWORD      dwParam,
  [out]     BYTE       *pbData,
  [in, out] DWORD      *pdwDataLen,
  [in]      DWORD      dwFlags
);

参数

[in] hHash

要查询的哈希对象的句柄。

[in] dwParam

查询类型。 此参数可以设置为以下查询之一。

含义
HP_ALGID
哈希算法
一个ALG_ID,指示创建哈希对象时指定的算法。 有关哈希算法的列表,请参阅 CryptCreateHash
HP_HASHSIZE
哈希值大小
指示哈希值中的字节数的 DWORD 值。 此值将因哈希算法而异。 应用程序必须在HP_HASHVAL值之前检索此值,以便分配正确的内存量。
HP_HASHVAL
哈希值
hHash 指定的哈希对象的哈希值或消息哈希。 此值基于前面通过 CryptHashDataCryptHashSessionKey 函数提供给哈希对象的数据生成。

CryptGetHashParam 函数完成哈希。 调用 CryptGetHashParam 后,无法向哈希添加更多数据。 对 CryptHashDataCryptHashSessionKey 的其他调用失败。 使用哈希完成应用程序后,应调用 CryptDestroyHash 来销毁哈希对象。

 
注意 CSP 可以添加此函数可以查询的更多值。
 

[out] pbData

指向接收指定值数据的缓冲区的指针。 此数据的形式因数值而异。

此参数可以为 NULL ,以确定所需的内存大小。

[in, out] pdwDataLen

指向指定 pbData 缓冲区大小(以字节为单位)的 DWORD 值的指针。 函数返回时, DWORD 值包含缓冲区中存储的字节数。

如果 pbDataNULL,请将 pdwDataLen 的值设置为零。

注意 处理缓冲区中返回的数据时,应用程序必须使用返回的数据的实际大小。 实际大小可以略小于输入时指定的缓冲区的大小。 (输入时,缓冲区大小通常指定得足够大,以确保最大的输出数据适合 buffer。) 输出时,此参数指向的变量将更新,以反映复制到缓冲区的数据的实际大小。
 

[in] dwFlags

保留供将来使用,必须为零。

返回值

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

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

“NTE”开头的错误代码由你使用的特定 CSP 生成。 一些可能的错误代码随之而来。

返回代码 说明
ERROR_INVALID_HANDLE
其中一个参数指定无效的句柄。
ERROR_INVALID_PARAMETER
其中一个参数包含无效的值。 这通常是无效的指针。
ERROR_MORE_DATA
如果 pbData 参数指定的缓冲区不够大,无法容纳返回的数据,则函数将设置ERROR_MORE_DATA代码,并将所需的缓冲区大小(以字节为单位)存储在 pdwDataLen 指向的变量中。
NTE_BAD_FLAGS
dwFlags 参数为非零。
NTE_BAD_HASH
hHash 参数指定的哈希对象无效。
NTE_BAD_TYPE
dwParam 参数指定未知值数字。
NTE_BAD_UID
找不到创建哈希时指定的 CSP 上下文。

要求

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

另请参阅

ALG_ID

CryptCreateHash

CryptDestroyHash

CryptGetKeyParam

CryptHashData

CryptHashSessionKey

CryptSetHashParam

哈希和数字签名函数