CryptCreateHash
Aus API-Wiki
Version vom 30. März 2007, 13:54 Uhr von Danielo (Diskussion | Beiträge)
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