CryptHashData 函式 (wincrypt.h)

重要 此 API 已被取代。 新的和現有的軟體應該開始使用 密碼編譯新一代 API。 Microsoft 可能會在未來的版本中移除此 API。
 
CryptHashData 函式會將數據新增至指定的哈希物件。 此函式和 CryptHashSessionKey 可以多次呼叫,以計算長數據流或不連續數據流的哈希。

呼叫此函式之前,必須先呼叫 CryptCreateHash ,才能建立哈希物件的句柄。

語法

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

參數

[in] hHash

哈希物件的句柄。

[in] pbData

緩衝區的指標,其中包含要加入至哈希對象的數據。

[in] dwDataLen

要加入的數據位元組數目。 如果已設定CRYPT_USERDATA旗標,這必須是零。

[in] dwFlags

定義下列旗標值。

意義
CRYPT_OWF_REPL_LM_HASH
0x00000001
未使用此旗標。
CRYPT_USERDATA
1 (0x1)
所有 Microsoft 密碼編譯提供者都會忽略此參數。 對於未忽略此參數的任何 CSP,如果已設定此旗標,CSP 會提示使用者直接輸入數據。 此數據會新增至哈希。 應用程式不允許存取數據。 此旗標可用來允許使用者在系統中輸入 PIN。

傳回值

如果函式成功,則傳回值為 TRUE

如果函式失敗,則傳回值為 FALSE。 如需擴充錯誤資訊,請呼叫 GetLastError

“NTE” 開頭的錯誤碼是由您使用的特定 CSP 所產生。 以下是一些可能的錯誤碼。

傳回碼 Description
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_LEN
CSP 不會忽略CRYPT_USERDATA旗標、已設定旗標,且 dwDataLen 參數具有非零值。
NTE_BAD_UID
找不到建立哈希物件時所指定的 CSP 內容。
NTE_FAIL
函式以非預期的方式失敗。
NTE_NO_MEMORY
CSP 在作業期間記憶體不足。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

CryptCreateHash

CryptHashSessionKey

CryptSignHash

哈希和數位簽名函式