CryptHashData

【勇芳软件工作室】汉化HomePreviousNext

[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_MEMORYCSP在运行过程中耗尽了内存。

请参阅CryptSignHash功能中的“示例”部分。

也可以看看

CryptCreateHash, CryptHashSessionKey, CryptSignHash