CryptCreateHash: Unterschied zwischen den Versionen
Aus API-Wiki
(Die Seite wurde neu angelegt: __NOTOC__ Beschreibung noch ausständig. <PRE> Declare Function CryptCreateHash Lib "advapi32.dll" ( _ ByVal hProv As Long, _ ByVal A...) |
|||
Zeile 1: | Zeile 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | + | Die Funktion [[CryptCreateHash]] erstellt ein Hash Objekt mit dem Hash Werte für Daten berechnet werden können. | |
<PRE> | <PRE> | ||
Zeile 6: | Zeile 6: | ||
ByVal hProv As Long, _ | ByVal hProv As Long, _ | ||
ByVal AlgID As Long, _ | ByVal AlgID As Long, _ | ||
− | ByVal | + | ByVal hKey As Long, _ |
ByVal dwFlags As Long, _ | ByVal dwFlags As Long, _ | ||
ByRef phHash As Long) As Long | ByRef phHash As Long) As Long | ||
Zeile 13: | Zeile 13: | ||
===Parameter=== | ===Parameter=== | ||
− | + | ''phProv'' | |
+ | :[in] Handle zu einem CSP. Ein solches Handle wird mit [[CryptAcquireContext]] erzeugt. | ||
+ | ''AlgID'' | ||
+ | :[in] Definiert den Hashalgorithmus der verwendet wird. Beispiele sind: [[CryptGenKeyAlgID|CALG_MD5]] oder [[CryptGenKeyAlgID|CALG_SHA]] | ||
+ | |||
+ | ''hKey'' | ||
+ | :[in] Dieser Parameter wird nur für Schlüsselbasierende Hashes verwendet. Für die gängigen, nicht Schlüsselbasierenden Hashes wie MD5 und SHA muss dieser Parameter 0 sein. | ||
+ | |||
+ | ''dwFlags'' | ||
+ | :[in] derzeit nicht verwendet, muss 0 sein. | ||
+ | |||
+ | ''phHash'' | ||
+ | :[out] In diesem Long Wert wird das Handle des erstellten Hash Objekts zurückgegeben. Nachdem das Hash Objekt verwendet wurde, muss es mit [[CryptDestroyHash]] zerstört werden. | ||
===Rückgabe(n)=== | ===Rückgabe(n)=== | ||
− | + | Bei Erfolg wird ein Wert ungleich 0 zurückgegeben. | |
+ | |||
+ | ===Beispiel=== | ||
+ | <pre> | ||
+ | 'Hash Objekt erstellen | ||
+ | If CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, hHash) <> 0 Then | ||
+ | 'Daten in Hash Objekt schreiben | ||
+ | If CryptHashData(hHash, VarPtr(btData(0)), UBound(btData) + 1, 0) = 0 Then | ||
+ | Err.Raise Err.LastDllError, , "CryptHashData Error" | ||
+ | End If | ||
+ | |||
+ | 'Länge des Hash's feststellen: | ||
+ | If CryptGetHashParam(hHash, HP_HASHVAL, 0, lHashLen, 0) <> 0 Then | ||
+ | 'Hash auslesen: | ||
+ | ReDim btData(lHashLen - 1) | ||
+ | If CryptGetHashParam(hHash, HP_HASHVAL, VarPtr(bData(0)), lHashLen, 0) <> 0 Then | ||
+ | 'Success | ||
+ | Else | ||
+ | Err.Raise Err.LastDllError, , "CryptGetHashParam Error" | ||
+ | End If | ||
+ | Else | ||
+ | Err.Raise Err.LastDllError, , "CryptGetHashParam Error" | ||
+ | End If | ||
+ | Else | ||
+ | Err.Raise Err.LastDllError, , "CryptCreateHash Error" | ||
+ | End If | ||
+ | 'Hash wieder zerstören: | ||
+ | If CryptDestroyHash(hHash) = 0 Then | ||
+ | Err.Raise Err.LastDllError, , "CryptDestroyHash Error" | ||
+ | End If | ||
+ | </pre> | ||
[[Kategorie:Crypt Api]] | [[Kategorie:Crypt Api]] |
Version vom 30. März 2007, 13:54 Uhr
Die Funktion CryptCreateHash erstellt ein Hash Objekt mit dem Hash Werte für Daten berechnet werden können.
Declare Function CryptCreateHash Lib "advapi32.dll" ( _ ByVal hProv As Long, _ ByVal AlgID As Long, _ ByVal hKey As Long, _ ByVal dwFlags As Long, _ ByRef phHash As Long) As Long
Parameter
phProv
- [in] Handle zu einem CSP. Ein solches Handle wird mit CryptAcquireContext erzeugt.
AlgID
hKey
- [in] Dieser Parameter wird nur für Schlüsselbasierende Hashes verwendet. Für die gängigen, nicht Schlüsselbasierenden Hashes wie MD5 und SHA muss dieser Parameter 0 sein.
dwFlags
- [in] derzeit nicht verwendet, muss 0 sein.
phHash
- [out] In diesem Long Wert wird das Handle des erstellten Hash Objekts zurückgegeben. Nachdem das Hash Objekt verwendet wurde, muss es mit CryptDestroyHash zerstört werden.
Rückgabe(n)
Bei Erfolg wird ein Wert ungleich 0 zurückgegeben.
Beispiel
'Hash Objekt erstellen If CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, hHash) <> 0 Then 'Daten in Hash Objekt schreiben If CryptHashData(hHash, VarPtr(btData(0)), UBound(btData) + 1, 0) = 0 Then Err.Raise Err.LastDllError, , "CryptHashData Error" End If 'Länge des Hash's feststellen: If CryptGetHashParam(hHash, HP_HASHVAL, 0, lHashLen, 0) <> 0 Then 'Hash auslesen: ReDim btData(lHashLen - 1) If CryptGetHashParam(hHash, HP_HASHVAL, VarPtr(bData(0)), lHashLen, 0) <> 0 Then 'Success Else Err.Raise Err.LastDllError, , "CryptGetHashParam Error" End If Else Err.Raise Err.LastDllError, , "CryptGetHashParam Error" End If Else Err.Raise Err.LastDllError, , "CryptCreateHash Error" End If 'Hash wieder zerstören: If CryptDestroyHash(hHash) = 0 Then Err.Raise Err.LastDllError, , "CryptDestroyHash Error" End If