cryptSetHashParam 函数 (wincrypt.h)

重要 此 API 已弃用。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
 
CryptSetHashParam 函数自定义哈希对象的操作,包括设置初始哈希内容和选择特定的哈希算法。

语法

BOOL CryptSetHashParam(
  [in] HCRYPTHASH hHash,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

参数

[in] hHash

要设置参数的哈希对象的句柄。

[in] dwParam

此参数的取值可为下列值之一:

含义
HP_HMAC_INFO。
指向 HMAC_INFO 结构的指针,该结构指定加密哈希算法以及要使用的内部和外部字符串。
HP_HASHVAL。
包含要直接放入哈希对象的哈希值的字节数组。 在设置此值之前,必须使用 CryptGetHashParam 函数读取HP_HASHSIZE值来确定哈希值的大小。

(CSP) 的某些 加密服务提供程序 不支持此功能。

 
注意 某些 CSP 类型可以添加可以使用此函数设置的其他值。
 

[in] pbData

值数据缓冲区。 在调用 CryptSetHashParam 之前,将值数据置于此缓冲区中。 此数据的形式因数值而异。

[in] dwFlags

此参数保留供将来使用,必须设置为零。

返回值

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

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

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

返回代码 说明
ERROR_INVALID_HANDLE
其中一个参数指定无效的句柄。
ERROR_BUSY
CSP 上下文当前正由另一个 进程使用。
ERROR_INVALID_PARAMETER
其中一个参数包含无效的值。 这通常是无效的指针。
NTE_BAD_FLAGS
dwFlags 参数为非零值,或者 pbData 缓冲区包含无效的值。
NTE_BAD_HASH
hHash 参数指定的哈希对象无效。
NTE_BAD_TYPE
dwParam 参数指定未知值。
NTE_BAD_UID
找不到创建 hKey 密钥时指定的 CSP 上下文。
NTE_FAIL
函数以某种意外的方式失败。

注解

有时,必须在其他位置生成的哈希值进行签名。 这可以通过使用以下操作序列来完成:

  1. 使用 CryptCreateHash 创建哈希对象。
  2. 设置HP_HASHVAL值。
  3. 使用 CryptSignHash 对哈希值进行签名,并获取数字签名块。
  4. 使用 CryptDestroyHash 销毁哈希对象。

要求

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

另请参阅

CryptCreateHash

CryptDestroyHash

CryptGetHashParam

CryptSetKeyParam

CryptSignHash

HMAC_INFO

哈希和数字签名函数