Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die BCryptCreateHash-Funktion wird aufgerufen, um ein Hash- oder Message Authentication Code (MAC)-Objekt zu erstellen.
Syntax
NTSTATUS BCryptCreateHash(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[out] BCRYPT_HASH_HANDLE *phHash,
[out, optional] PUCHAR pbHashObject,
[in] ULONG cbHashObject,
[in, optional] PUCHAR pbSecret,
[in] ULONG cbSecret,
[in] ULONG dwFlags
);
Parameter
[in, out] hAlgorithm
Das Handle eines Algorithmusanbieters, der die Hash- oder MAC-Schnittstelle unterstützt. Dieses Handle wird durch Aufrufen der BCryptOpenAlgorithmProvider-Funktion abgerufen oder kann ein CNG-Algorithmus-Pseudohandle sein.
[out] phHash
Ein Zeiger auf einen BCRYPT_HASH_HANDLE Wert, der ein Handle empfängt, das das Hash- oder MAC-Objekt darstellt. Dieses Handle wird in nachfolgenden Hashing- oder MAC-Funktionen wie der BCryptHashData-Funktion verwendet. Wenn Sie diesen Handle verwendet haben, lassen Sie es los, indem Sie es an die BCryptDestroyHash-Funktion übergeben.
[out, optional] pbHashObject
Ein Zeiger auf einen Puffer, der das Hash- oder MAC-Objekt empfängt. Der cbHashObject-Parameter enthält die Größe dieses Puffers. Die erforderliche Größe dieses Puffers kann durch Aufrufen der BCryptGetProperty-Funktion abgerufen werden, um die BCRYPT_OBJECT_LENGTH Eigenschaft aus dem Algorithmushandle abzurufen. Dadurch wird die Größe des Hash- oder MAC-Objekts für den angegebenen Algorithmus bereitgestellt.
Dieser Speicher kann nur freigegeben werden, nachdem das handle, auf das der PhHash-Parameter verweist, zerstört wird.
Wenn der Wert dieses Parameters und der Wert des cbHashObject-Parameters null istNULL, wird der Speicher für das Hashobjekt von dieser Funktion zugewiesen und von BCryptDestroyHash freigegeben.
Windows 7: Diese Speicherverwaltungsfunktion ist ab Windows 7 verfügbar.
[in] cbHashObject
Die Größe des PbHashObject-Puffers in Bytes.
Wenn der Wert dieses Parameters null ist und der Wert des PbHashObject-Parameters lautet NULL, wird der Speicher für das Schlüsselobjekt von dieser Funktion zugewiesen und von BCryptDestroyHash freigegeben.
Windows 7: Diese Speicherverwaltungsfunktion ist ab Windows 7 verfügbar.
[in, optional] pbSecret
Ein Zeiger auf einen Puffer, der den für einen MAC zu verwendenden Schlüssel enthält. Der cbSecret-Parameter enthält die Größe dieses Puffers. Bei Verwendung mit einem Hashalgorithmus muss der Algorithmus mithilfe des BCRYPT_ALG_HANDLE_HMAC Flags in BCryptOpenAlgorithmProvider zu HMAC heraufgestuft worden sein.
Um einen Hash zu berechnen, legen Sie diesen Parameter auf NULL.
[in] cbSecret
Die Größe des PbSecret-Puffers in Bytes. Wenn kein Schlüssel verwendet wird, legen Sie diesen Parameter auf Null fest.
[in] dwFlags
Flags, die das Verhalten der Funktion ändern. Dies kann null oder der folgende Wert sein:
| Wert | Bedeutung |
|---|---|
| BCRYPT_HASH_REUSABLE_FLAG | Erstellt ein wiederverwendbares Hashing-Objekt. Das Objekt kann unmittelbar nach dem Aufrufen von BCryptFinishHash für einen neuen Hashingvorgang verwendet werden. Weitere Informationen finden Sie unter Erstellen eines Hashs mit CNG. Windows Server 2008 R2, Windows 7, Windows Server 2008 und Windows Vista: Dieses Kennzeichen wird nicht unterstützt. |
Rückgabewert
Gibt einen Statuscode zurück, der den Erfolg oder Fehler der Funktion angibt.
Mögliche Rückgabecodes umfassen, aber nicht beschränkt auf Folgendes.
| Rückgabecode | Beschreibung |
|---|---|
| STATUS_SUCCESS | Die Funktion war erfolgreich. |
| STATUS_BUFFER_TOO_SMALL | Die Größe des vom cbHashObject-Parameter angegebenen Hashobjekts ist nicht groß genug, um das Hashobjekt zu enthalten. |
| STATUS_INVALID_HANDLE | Der Algorithmushandle im hAlgorithm-Parameter ist ungültig. |
| STATUS_INVALID_PARAMETER | Mindestens ein Parameter ist ungültig. |
| STATUS_NOT_SUPPORTED | Der vom hAlgorithm-Parameter angegebene Algorithmusanbieter unterstützt die Hash- oder MAC-Schnittstelle nicht. |
Bemerkungen
Bei Verwendung eines unterstützten Algorithmusanbieters kann BCryptCreateHash entweder über den Benutzermodus oder den Kernelmodus aufgerufen werden. Kernelmodusaufrufer können entweder bei PASSIVE_LEVELIRQL oder DISPATCH_LEVEL IRQL ausgeführt werden. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEL ist, muss das im hAlgorithm-Parameter angegebene Handle mithilfe des BCRYPT_PROV_DISPATCH-Flags geöffnet worden sein, und alle Zeiger, die an die BCryptCreateHash-Funktion übergeben werden, müssen auf nicht seitenseitigen (oder gesperrten) Speicher verweisen.
Der Aufrufer sollte phHash mit BCryptDestroyHash freigeben, wenn das Objekt nicht mehr verwendet wird.
Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.libdas Driver Development Kit (DDK).
Windows Server 2008 und Windows Vista: Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Ksecdd.lib.
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows Vista [Desktop-Apps | UWP-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
| Zielplattform | Fenster |
| Header | bcrypt.h |
| Library | Bcrypt.lib |
| DLL | Bcrypt.dll |