[New - Windows NT]
[New - Windows 95, OEM Service Release 2]
CryptHashData函数用于计算数据流上的加密散列。此函数和CryptHashSessionKey可以多次调用,以计算长流或不连续流上的散列。
在调用此函数之前,必须调用CryptCreateHash函数来获取哈希对象的句柄。
BOOL CRYPTFUNC CryptHashData(
HCRYPTHASH【马】, | |
BYTE *【pbData】, | |
DWORD【dwDataLen】, | |
DWORD【dwFlags中】 | |
); |
参数
【马】
[in]散列对象的句柄。应用程序使用CryptCreateHash函数获取此句柄。
【pbData】
[in]要散列的数据的地址。
【dwDataLen】
[in]要散列的数据的字节数。如果设置了CRYPT_USERDATA标志,则该值必须为0。
【dwFlags中】
[in]标志值。当前定义了以下值:
*CRYPT_USERDATA
当设置此标志时,CSP将提示用户直接输入一些数据。然后将其添加到哈希。该应用程序不允许访问数据。例如,该标志可以用于允许用户在系统中输入PIN。
Microsoft RSA基础提供程序忽略此参数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要检索扩展错误信息,请使用GetLastError功能。
下表列出了GetLastError功能最常返回的错误代码。由“NTE”开头的错误代码由您使用的特定CSP生成。
错误 | 描述 |
ERROR_INVALID_HANDLE | 其中一个参数指定一个无效句柄。 |
ERROR_INVALID_PARAMETER | 其中一个参数包含无效值。这通常是一个非法的指针。 |
NTE_BAD_ALGID | 【马】句柄指定此CSP不支持的算法。 |
NTE_BAD_FLAGS | 【dwFlags中】参数包含无效值。 |
NTE_BAD_HASH | 由【马】参数指定的散列对象无效。 |
NTE_BAD_HASH_STATE | 尝试将数据添加到已标记为“已完成”的散列对象。 |
NTE_BAD_KEY | 正在使用密钥哈希算法,但会话密钥不再有效。如果在散列操作完成之前会话密钥被销毁,则会产生此错误。 |
NTE_BAD_LEN | 设置CRYPT_USERDATA标志,并且【dwDataLen】参数具有非零值。 |
NTE_BAD_UID | 创建哈希对象时指定的CSP上下文无法找到。 |
NTE_FAIL | 该函数以某种意想不到的方式失败。 |
NTE_NO_MEMORY | CSP在运行过程中耗尽了内存。 |
例
请参阅CryptSignHash功能中的“示例”部分。
也可以看看