Funktionsgruppe: Kryptografische Funktion
ENCRYPT() verschlüsselt Werte eines beliebigen Datentyps mit dem AES-Algorithmus und einem Schlüssel (key) von 128 Bit (16 Bytes) im Electronic Codebook Mode (ECM).
ENCRYPT (
ausdruck ,
schlüssel )
ausdruck
Ausdruck, dessen Wert verschlüsselt werden soll.
Der Wert darf von einem beliebigen Datentyp sein, jedoch nicht CHARACTER VARYING mit Länge >= 31998 und nicht NATIONAL CHARACTER VARYING(16000).
ausdruck darf kein multipler Wert mit Dimension > 1 sein.
schlüssel
Schlüssel, mit dem der Wert von ausdruck verschlüsselt werden soll.
Alphanumerische Zeichenkette mit einer Länge von 16 Zeichen, also vom Datentyp CHARACTER(16) oder CHARACTER VARYING(n) mit n >= 16.
Außerdem ist der NULL-Wert eines dieser Datentypen zulässig.
Ergebnis
Wenn der Wert von ausdruck oder von schlüssel der NULL-Wert ist, dann ist das Ergebnis der NULL-Wert.
Sonst:
Der verschlüsselte Wert von ausdruck.
Datentyp:
CHARACTER VARYING mit einer Maximallänge gemäß folgender Tabelle.
Datentyp von ausdruck | Datentyp des Ergebnisses |
CHAR(m) | VARCHAR(n) 1 |
VARCHAR(m) mit m <= 31998 | VARCHAR(n) 1 |
NCHAR(m) | VARCHAR(n) 2 |
NVARCHAR(m) mit m <= 15999 | VARCHAR(n) 2 |
SMALLINT, INTEGER | VARCHAR(16) |
NUMERIC (bis 14 Stellen) | VARCHAR(16) |
NUMERIC (15 bis 30 Stellen) | VARCHAR(32) |
NUMERIC (31 Stellen) | VARCHAR(48) |
DECIMAL (bis 27 Stellen) | VARCHAR(16) |
DECIMAL (28 bis 31 Stellen) | VARCHAR(32) |
FLOAT, REAL, DOUBLE PRECISION | VARCHAR(16) |
DATE, TIME(3), TIMESTAMP(3) | VARCHAR(16) |
Tabelle 14: Datentyp des Resultats von ENCRYPT()
1wobei n das kleinste ganzzahlige Vielfache von 16 ist, das >= m + 2 ist
2wobei n das kleinste ganzzahlige Vielfache von 16 ist, das >= 2*m + 2 ist
Wenn ausdruck einen Datentyp hat, dessen Werte unterschiedliche Längen haben können (also (NATIONAL) CHARACTER VARYING), dann können auch die verschlüsselten Werte unterschiedliche Längen haben. Die Länge des verschlüsselten Wertes ist aber immer ein Vielfaches von 16 Zeichen, siehe Tabelle oben.Hat zum Beispiel ausdruck den Datentyp VARCHAR(20), so hat das Resultat von ENCRYPT() den Datentyp VARCHAR(32); Zeichenketten mit 0 bis 14 Zeichen werden in Zeichenketten mit 16 Zeichen verschluesselt, Zeichenketten mit 15 bis 20 Zeichen werden in Zeichenketten mit 32 Zeichen verschluesselt. Die genaue Länge des unverschlüsselten Wertes lässt sich ohne Kenntnis des Schlüssels nicht dem verschlüsselten Wert entnehmen (sie wird zusammen mit dem Wert verschlüsselt).
Beispiele
Die Werte der Spalte LSATZ werden in die Spalte LSATZ_ENCR verschlüsselt; die unverschlüsselten Werte der Spalte LSATZ werden zu Null gemacht: UPDATE leistung SET lsatz_encr = ENCRYPT(lsatz,'0123456789ABCDEF'), lsatz = NULL WHERE lsatz IS NOT NULL Mit der Funktion REP_OF_VALUE lassen sich auch mehrere Wert in einer Zeichenkette verschlüsseln (siehe auch "DECRYPT() - Daten entschlüsseln"):
|