Zum Hauptinhalt springen

MemDecrypt

obj -> MemDecrypt(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 entschlüsseln

Details

  • obj: Chiffrat / Klartext ( Memory -Objekt)
  • int1: Optionen (siehe Text)
  • alpha2: Schlüssel
  • alpha3: Initialisierungsvektor
  • int4: Chiffratposition
  • int5: Chiffratlänge
  • handle6: Klartext ( Memory -Objekt)
  • int7: Klartextposition
  • 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 _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 _ErrMemDecrypt Entschlüsselung ist fehlgeschlagen
  • Siehe: Verwandte Befehle , MemEncrypt () , Blog

Dieser Befehl entschlüsselt den Inhalt des Memory-Objektes (obj). Es müssen der gleiche Schlüssel und Initialisierungsvektor angegeben werden, der auch beim Verschlüsseln verwendet wurde.

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 entschlüsselnde Nachricht 16 Byte lang oder ein Vielfaches davon sein.

Bei der Entschlüsselung mit _MemCipherRSA muss ein Padding (_MemPaddingRSA...) angegeben werden.

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. 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 entschlüsselnden Daten in (obj) angegeben.

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

Die Zielposition des Klartextes in (handle6) bzw. (obj) kann im Argument (int7) angegeben. 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 muss zuvor das Authentifikations-Tag geschrieben, welches bei MemEncrypt () ermittelt wurde. 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 Authentifikations-Tag (handle10) angegeben.
  • _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.