
DECRYPT_DATAKEY_INTEGER, DECRYPT_DATAKEY_BIGINT, DECRYPT_DATAKEY_DECIMAL, DECRYPT_DATAKEY_VARCHAR, DECRYPT_DATAKEY_CLOB, DECRYPT_DATAKEY_VARGRAPHIC, DECRYPT_DATAKEY_DBCLOB und DECRYPT_DATAKEY_BIT skalare Funktionen
Die Funktionen zur Entschlüsselung des Datenschlüssels geben einen Wert zurück, der das Ergebnis der Entschlüsselung des ersten Arguments (zuvor mit der Funktion ENCRYPT_DATAKEY verschlüsselt) unter Verwendung des Algorithmus ist, der bei der Verschlüsselung der Daten angegeben wurde. Der Name der Entschlüsselungsfunktion gibt den gewünschten Ergebnisdatentyp an. Der Name der aufgerufenen Entschlüsselungsfunktion muss dem ursprünglichen Datentyp der verschlüsselten Daten entsprechen.
Berechtigung
Die primäre Autorisierungs-ID, die zum Aufrufen der Entschlüsselungsfunktion verwendet wird, muss zur Verwendung des Schlüsseletiketts autorisiert sein, das zum Verschlüsseln der Daten verwendet wurde. RACF und ähnliche externe Sicherheitsprodukte können den Zugriff zulassen, wenn die Berechtigung zur Verwendung der Schlüsselkennung einer der Gruppen gestattet ist, denen die primäre Berechtigungs-ID zugeordnet ist. with.The Die Schlüsselkennung wird in den Metadaten gespeichert, die mit dem verschlüsselten Wert gespeichert werden, so dass die Schlüsselkennung bei der Entschlüsselung nicht angegeben werden muss. Wenn für die primäre Autorisierungs-ID kein ACEE verfügbar ist, erstellt Db2 einen ACEE, um bei Ausführung der Entschlüsselungsfunktion die erforderliche Autorisierung zu überprüfen. Weitere Informationen finden Sie unter Wenn Db2 eine ACEE erstellt.
Syntax
Ganzzahl:
Dezimalzahl:
Zeichenfolge:
Bit:
Das Schema ist SYSIBM.
- verschlüsselte Daten
- Ein Ausdruck, der einen integrierten VARBINARY- oder BLOB-Wert zurückgibt. Der Wert muss im gleichen Format zurückgegeben werden, das die Funktion ENCRYPT_DATAKEY zurückgibt.
- ccsid-konstant
- Eine Ganzzahlkonstante, die die CCSID angibt, in der die Daten von der Entschlüsselungsfunktion zurückgegeben werden sollen. Der Wert muss einer der CCSID-Werte in DECP sein. Wenn das Ergebnis der Funktion VARCHAR ist, muss die angegebene CCSID entweder eine SBCS- oder eine MIXED-CCSID sein. Wenn das Ergebnis der Funktion CLOB ist, muss die angegebene CCSID eine MIXED CCSID sein, wenn das Kodierungsschema Unicode ist; andernfalls muss die angegebene CCSID eine SBCS- oder MIXED CCSID sein. Wenn das Ergebnis der Funktion VARGRAPHIC oder DBCLOB ist, muss die angegebene CCSID eine DBCS CCSID sein. Siehe Kodierungsschema und CCSID-Regeln für Strings für besondere Überlegungen zu CCSID 367.Wenn ccsid nicht angegeben wird, wenn es sich bei den verschlüsselten Daten um eine Zeichen- oder Grafikzeichenfolge handelt, wird der Standardwert wie folgt aus dem Kodierungsschema und dem Datentyp des Ergebnisses bestimmt:
- Für statische SQL-Anweisungen die ENCODING-Bindungsoption des Plans oder Pakets oder die Option APPLICATION ENCODING SCHEME der CREATE- oder ALTER-Anweisung für eine kompilierte SQL-Skalarfunktion, eine native SQL-Prozedur oder einen erweiterten Trigger.
- Für dynamische SQL-Anweisungen der Wert des Spezialregisters "ANWENDUNGSKODIERUNG".
Der Standard-CCSID des Ergebnisses wird aus dem Ergebnisdatentyp bestimmt:- VARCHAR: Das Standardergebnis CCSID ist die gemischte Daten-CCSID für das Kodierungsschema.
- CLOB: das Standardergebnis CCSID ist die gemischte Daten-CCSID für das Kodierungsschema.
- VARGRAPHIC oder DBCLOB: Das Standardergebnis CCSID ist die DBCS CCSID für das Kodierungsschema.
- genauigkeit
- Eine ganze Zahl mit einem Wert größer oder gleich 1 und kleiner oder gleich 31.
- skala
- Eine ganze Zahl, die größer oder gleich Null und kleiner oder gleich der Genauigkeit ist. Der Wert gibt die Größenordnung des Ergebnisses an.
| Funktion | Datentyp des ersten Arguments | Ursprünglicher Datentyp der verschlüsselten Daten | Datentyp des Ergebnisses der Funktion |
|---|---|---|---|
| DECRYPT_DATAKEY_INTEGER | VARBINARY | INTEGER | INTEGER |
| DECRYPT_DATAKEY_BIGINT | VARBINARY | BIGINT | BIGINT |
| DECRYPT_DATAKEY_DECIMAL | VARBINARY | DECIMAL | DEZIMAL (Genauigkeit, Maßstab ) |
| DECRYPT_DATAKEY_BIT | VARBINARY | CHAR FÜR BIT-DATEN, VARCHAR FÜR BIT-DATEN | VARCHAR FOR BIT DATA |
| DECRYPT_DATAKEY_VARCHAR | VARBINARY | CHAR, VARCHAR | VARCHAR |
| DECRYPT_DATAKEY_CLOB | BLOB | CLOB | CLOB |
| DECRYPT_DATAKEY_VARGRAPHIC | VARBINARY | GRAPHIC, VARGRAPHIC | VARGRAPHIC |
| DECRYPT_DATAKEY_DBCLOB | BLOB | DBCLOB | DBCLOB |
Das Längenattribut des Ergebnisses ist das Längenattribut des Datentyps der verschlüsselten Daten minus 8 Byte. Wenn eine Funktion einen String-Datentyp zurückgibt, ist das Längenattribut des Ergebnisses das Längenattribut des Datentyps der verschlüsselten Daten minus 16 Byte. Die tatsächliche Länge des Ergebnisses entspricht der Länge der ursprünglichen Zeichenkette, die verschlüsselt wurde. Wenn die verschlüsselten Daten Bytes enthalten, die über die verschlüsselte Zeichenfolge hinausgehen, werden diese Bytes von der Funktion nicht zurückgegeben.
Wenn das erste Argument null ist, kann das Ergebnis null sein; wenn das erste Argument null ist, ist das Ergebnis der Nullwert.
Wenn der Ergebnisdatentyp eine Zeichenkette ist, werden die verschlüsselten Daten in die ursprüngliche CCSID entschlüsselt und dann wird das Zwischenergebnis in die angegebene CCSID für das Ergebnis umgewandelt. Wenn der Ergebnisdatentyp VARCHAR FOR BIT DATA ist, ist die CCSID des Ergebnisses 65535. Andernfalls, wenn der Ergebnisdatentyp VARCHAR, CLOB, DBCLOB oder VARGRAPHIC ist, ist die CCSID des Ergebnisses ccsid. Wenn die Daten mit einer anderen CCSID als dem ursprünglich verschlüsselten Wert entschlüsselt werden, kann es bei der Konvertierung des entschlüsselten Werts in diese CCSID zu einer Erweiterung kommen. In solchen Situationen muss der verschlüsselte Datenwert zunächst in eine Zeichenkette mit variabler Länge und einer größeren Anzahl von Bytes umgewandelt werden, bevor die Entschlüsselung durchgeführt werden kann.
Beispiel
Entschlüsseln Sie den Wert in der Spalte "PROTECTED_SSN VARBINARY". Die verschlüsselten Daten waren ursprünglich eine Zeichenkette.
SELECT DECRYPT_DATAKEY_VARCHAR(PROTECTED_SSN)
FROM CUSTOMER
WHERE CID = ?
Die CCSID für das Ergebnis wurde nicht angegeben, sodass sie standardmäßig wie für den Parameter ccsid beschrieben ist.

