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 所產生。 接下來有一些可能的錯誤碼。

傳回碼 Description
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
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

CryptCreateHash

CryptDestroyHash

CryptGetHashParam

CryptSetKeyParam

CryptSignHash

HMAC_INFO

哈希和數位簽名函式