Zum Hauptinhalt springen

MemEncrypt

obj -> MemEncrypt(int1, alpha2, alpha3[, int4[, int5[, handle6[, int7[, handle8[, handle9[, handle10]]]]]]]) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Speicherbereich verschlüsseln

Details

  • obj: Klartext / Chiffrat ( Memory -Objekt)
  • int1: Optionen (siehe Text)
  • alpha2: Schlüssel
  • alpha3: Initialisierungsvektor
  • int4: Klartextposition
  • int5: Klartextlänge
  • handle6: Chiffrat ( Memory -Objekt)
  • int7: Chiffratposition
  • handle8: Schlüssel ( Memory -Objekt)
  • handle9: Initialisierungsvektor ( Memory -Objekt)
  • handle10: Authentifikations-Tag für GCM ( Memory -Objekt)
  • Resultat: int Fehlerwert _ErrOk Erfolg _ErrMemKeyInvalid Schlüssel ist ungültig oder der falsche Schlüsseltyp bei asymmetrischen Schlüsseln wurde angegeben _ErrMemKeyLength Schlüssel ist zu kurz oder zu lang für den Algorithmus _ErrMemIVInvalid Initialisierungsvektor ist ungültig _ErrMemIVLength Initialisierungsvektor ist zu kurz oder zu lang für den Algorithmus
  • Siehe: Verwandte Befehle , MemDecrypt () , Blog

Dieser Befehl verschlüsselt den Inhalt des Memory-Objektes (obj).

Folgende Optionen (int1) sind möglich:

Der Paramter (int1) setzt sich aus der Kombination je einer Konstanten der Bereiche Verschlüsselungsalgorithmus, Verschlüsselungsmodus, Kodierung des Schlüssels und Kodierung des Initialisierungsvektors zusammen. Diese können zusätzlich mit den Padding-Optionen kombiniert werden.

info

Wird die Option _MemCipherNoPadding verwendet, muss die zu verschlüsselnde Nachricht 16 Byte lang oder ein Vielfaches davon sein.

Bei der Verschlüsselung mit _MemCipherRSA muss ein Padding (_MemPaddingRSA...) angegeben werden. Das Padding füllt den Rest der zu verschlüsselnden Nachricht auf die Schlüsselbitlänge auf. Für das Padding werden mindestens die folgende Anzahl an Zeichen benötigt:

info

Auch wenn der zu verschlüsselnde Klartext im Memory-Objekt nur aus darstellbaren Zeichen besteht, kann das Chiffrat aus nichtdarstellbaren Zeichen (binären Daten) bestehen.

Der Schlüssel wird in (alpha2) bzw. (handle8) angegeben. Je nach Verschlüsselungsalgorithmus muss der Schlüssel eine bestimmte Länge haben:

info

Im Gegensatz zu _MemCipherAES... , wo der Schlüssel aus zufälligen Zeichen besteht, muss bei _MemCipherRSA ein gültiger Schlüssel eines Schlüsselpaares angegeben werden. Dieses Schlüsselpaar kann beispielsweise mit MemGenKeyPair () oder OpenSSL erzeugt werden. Die maximale Länge der verschlüsselbaren Zeichenkette hängt hierbei vom gewählten Padding und der Bitlänge des Schlüssels ab. Der asymmetrische Schlüssel muss im PKCS #1- oder im X.509-Format vorliegen. Die Begin- und Endmarkierung dürfen nicht enthalten sein.

info

Die Ver- und Entschlüsselung mit RSA nimmt wesentlich mehr Zeit in Anspruch als mit AES. Um große Datenmengen zu verschlüsseln sollte ein zufälliger AES-Schlüssel generiert werden, der mit RSA verschlüsselt wird. Der eigentliche Klartext wird mit AES verschlüsselt.

Der Initialisierungsvektor wird in (alpha3) bzw. (handle9) angegeben. Dieser dient dazu, dass die gleiche Nachricht mit dem gleichen Schlüssel nicht das gleiche Ergebnis liefert. Der Initialisierungsvektor sollte zufällig generiert und nicht mehrfach genutzt werden. Die Länge vom Initialisierungsvektor ist abhängig von der Blocklänge des Verschlüsselungsalgorithmus. Bei AES sind dies 128 Bit (16 Byte). Der Initialisierungsvektor muss nicht geheim gehalten werden. Bei _MemCipherRSA wird der Initialisierungsvektor nicht verwendet.

In (int4) und (int5) wird die Position und die Länge der zu verschlüsselnden Daten in (obj) angegeben.

In (handle6) kann ein Ziel- Memory -Objekt angegeben werden, in dass das Chiffrat gespeichert wird. Ist dieses nicht angegeben, erfolgt die Speicherung in (obj).

Die Zielposition des Chiffrats in (handle6) bzw. (obj) kann im Argument (int7) angegeben werden. Ist das Argument nicht gesetzt, wird an den Anfang des Memory -Objektes geschrieben.

In (handle10) muss ein Memory -Objekt angegeben werden, wenn als Option (int1) _MemCipherModeGCM angegeben ist. In dieses Memory -Objekt wird das Authentifikations-Tag geschrieben, welches bei MemDecrypt () zur Authentifizierung der verschlüsselten Nachricht angegeben werden muss. Dieses Tag ist 16 Byte lang.

Mögliche Laufzeitfehler:

  • _ErrHdlInvalid: Einer der übergeben Deskriptoren (obj), (handle6), (handle8), (handle9) oder (handle10) ist ungültig.
  • _ErrMemExhausted: Nicht genug Speicher vorhanden.
  • _ErrNoArgument: Bei der Option _MemKeyMem wurde kein Schlüssel (handle8), bei _MemIVMem kein Initialisierungsvektor (handle9) oder bei _MemCipherModeGCM kein Memory -Objekt für das Authentifikations-Tag (handle10) angegeben.
  • _ErrStringOverflow: Der Plaintext (obj) ist bei der RSA-Verschlüsselung zusammen mit dem Padding länger als der Schlüssel (alpha2) bzw. (handle8).
  • _ErrValueInvalid: In den Optionen (int1) wurde eine ungültige oder unvollständige Kombination angegeben.
  • _ErrValueRange: Eine der Längen- oder Positionsangaben (int4), (int5) oder (int7) ist ungültig.