Freigeben über


CryptHashData-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Releases entfernen.
 
Die CryptHashData-Funktion fügt einem angegebenen Hashobjekt Daten hinzu. Diese Funktion und CryptHashSessionKey können mehrmals aufgerufen werden, um den Hash von langen oder diskontinuierlichen Datenströmen zu berechnen.

Vor dem Aufrufen dieser Funktion muss CryptCreateHash aufgerufen werden, um ein Handle eines Hashobjekts zu erstellen.

Syntax

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

Parameter

[in] hHash

Handle des Hashobjekts.

[in] pbData

Ein Zeiger auf einen Puffer, der die Daten enthält, die dem Hashobjekt hinzugefügt werden sollen.

[in] dwDataLen

Anzahl der hinzuzufügenden Datenbytes. Dies muss null sein, wenn das CRYPT_USERDATA-Flag festgelegt ist.

[in] dwFlags

Die folgenden Flagwerte werden definiert.

Wert Bedeutung
CRYPT_OWF_REPL_LM_HASH
0x00000001
Dieses Flag wird nicht verwendet.
CRYPT_USERDATA
1 (0x1)
Alle Microsoft-Kryptografieanbieter ignorieren diesen Parameter. Bei jedem CSP, der diesen Parameter nicht ignoriert, fordert der CSP den Benutzer auf, daten direkt einzugeben, wenn dieses Flag festgelegt ist. Diese Daten werden dem Hash hinzugefügt. Der Anwendung ist der Zugriff auf die Daten nicht gestattet. Dieses Flag kann verwendet werden, um dem Benutzer die Eingabe einer PIN im System zu ermöglichen.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Die von "NTE" vorangestellten Fehlercodes werden von dem jeweiligen CSP generiert, den Sie verwenden. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
ERROR_INVALID_HANDLE
Einer der Parameter gibt ein ungültiges Handle an.
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist in den meisten Fällen ein nicht gültiger Zeiger.
NTE_BAD_ALGID
Das hHash-Handle gibt einen Algorithmus an, den dieser CSP nicht unterstützt.
NTE_BAD_FLAGS
Der dwFlags-Parameter enthält einen wert, der ungültig ist.
NTE_BAD_HASH
Das durch den hHash-Parameter angegebene Hashobjekt ist ungültig.
NTE_BAD_HASH_STATE
Es wurde versucht, einem Hashobjekt Daten hinzuzufügen, das bereits als "abgeschlossen" gekennzeichnet ist.
NTE_BAD_KEY
Es wird ein Schlüsselhashalgorithmus verwendet, aber der Sitzungsschlüssel ist nicht mehr gültig. Dieser Fehler wird generiert, wenn der Sitzungsschlüssel vor Abschluss des Hashvorgangs zerstört wird.
NTE_BAD_LEN
Der CSP ignoriert das CRYPT_USERDATA-Flag nicht, das Flag ist festgelegt, und der dwDataLen-Parameter hat einen nonzero-Wert.
NTE_BAD_UID
Der CSP-Kontext, der beim Erstellen des Hashobjekts angegeben wurde, kann nicht gefunden werden.
NTE_FAIL
Die Funktion ist auf unerwartete Weise fehlgeschlagen.
NTE_NO_MEMORY
Während des Vorgangs ging dem CSP der Arbeitsspeicher aus.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

CryptCreateHash

CryptHashSessionKey

CryptSignHash

Hash- und Digitale Signaturfunktionen