CryptCreateHash: Unterschied zwischen den Versionen

Aus API-Wiki
Wechseln zu: Navigation, Suche
(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__
Beschreibung noch ausständig.
+
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 hSessionKey As Long, _
+
                 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===
Beschreibung noch ausständig.
+
''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)===
Beschreibung noch ausständig.
+
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

[in] Definiert den Hashalgorithmus der verwendet wird. Beispiele sind: CALG_MD5 oder 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)

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