CryptEncrypt

Aus API-Wiki
Wechseln zu: Navigation, Suche

Die Funktion CryptEncrypt verschlüsselt Daten. Zuvor muss ein gültiger Schlüssel mit CryptGenKey oder CryptDeriveKey erstellt worden sein.

Declare Function CryptEncrypt Lib "advapi32.dll" ( _
                 ByVal hKey As Long, _
                 ByVal hHash As Long, _
                 ByVal Final As Long, _
                 ByVal dwFlags As Long, _
                 ByVal pbData As Long, _
                 ByRef pdwDataLen As Long, _
                 ByVal dwBufLen As Long) As Long

Parameter

hKey

[in] Handle eines mit CryptGenKey oder CryptDeriveKey erstellten, oder mit CryptImportKey importierten Schlüssels.

hHash

[in] CryptEncrypt kann gleichzeitig mit dem Verschlüsseln auch einen Hash Wert der selben Daten berechnen. Hierzu wird in diesem Parameter das Handle eines mit CryptCreateHash erstellten Hash Objekts übergeben.

Final

[in] In diesem Parameter wird 0 übergeben, wenn mehrere aufeinanderfolgende Datenblöcke durch wiederholtes Aufrufen von CryptEncrypt verschlüsselt werden sollen. Mit dem Aufruf des letzten Blocks setzt man diesen Parameter dann auf 1. Wird CryptEncrypt nur einmal aufgerufen, also nur ein Block verschlüsselt, übergibt man sofort 1.

dwFlags

[in] Es gibt derzeit nur ein definiertes Flag: CRYPT_OAEP welches im Zusammenhang mit 'Optimal Asymmetric Encryption Padding (OAEP) (PKCS #1 version 2)' verwendet wird. Im allgemeinen kann man diesen Parameter auf 0 setzen.

pbData

[in,out] Zeiger auf die Daten welche verschlüsselt werden sollen. Auf dem selben Speicherbereich werden auch die verschlüsselten Daten zurückgegeben. Da im allgemeinen die verschlüsselte Variante länger als der Originaltext ist, muss der Buffer ausreichend gross dimensioniert sein. Um die benötigte Grösse zu ermitteln wird in diesem Parameter NULL übergeben, CryptEncrypt gibt dann die benötigte Grösse in dwDataLen zurück.

dwDataLen

[in,out] Länge der in pbData bereitgestellten, zu verschlüsselnden Daten in Bytes. Nach der Rückkehr der Funktion enthält diese Variable die Länge der verschlüsselten Daten in pbData.

dwBufLen

[in] gesamte Grösse des in pbData bereitgestellten Buffers.

Rückgabe(n)

Bei Erfolg wird ein Wert ungleich 0 zurückgegeben.

Beispiel

Ein komplettes Beispiel zum Ver- und Entschlüsseln findet sich unter CryptDecrypt