Inicio del cambio

DECRYPT_DATAKEY_INTEGER, DECRYPT_DATAKEY_BIGINT, DECRYPT_DATAKEY_DECIMAL, DECRYPT_DATAKEY_VARCHAR, DECRYPT_DATAKEY_CLOB, DECRYPT_DATAKEY_VARGRAPHIC, DECRYPT_DATAKEY_DBCLOB y DECRYPT_DATAKEY_BIT funciones escalares

Las funciones de descifrado de claves de datos devuelven un valor que es el resultado de descifrar el primer argumento (previamente cifrado utilizando la función ENCRYPT_DATAKEY) utilizando el algoritmo que se especificó al cifrar los datos. El nombre de la función de descifrado indica el tipo de datos de resultado deseado. El nombre de la función de descifrado que se invoca debe corresponder al tipo de datos original de los datos cifrados.

Autorización

Inicio del cambioLa identificación de autorización principal que se utiliza para invocar la función de descifrado debe estar autorizada para utilizar la etiqueta de clave que se utilizó para cifrar los datos. RACF y productos de seguridad externos similares pueden permitir el acceso si la autorización para utilizar la etiqueta de clave está permitida a uno de los grupos a los que está asociado el ID de autorización principal with.The etiqueta de clave se guarda en los metadatos almacenados con el valor cifrado, por lo que no es necesario especificar la etiqueta de clave durante el descifrado. Cuando no hay ningún ACEE disponible para el ID de autorización principal, Db2 crea uno para comprobar la autorización necesaria cuando se ejecuta la función de descifrado. Para más información, consulte Cuándo Db2 crea un ACEE.fin del cambio

Sintaxis

Número entero:

Leer diagrama de sintaxisOmitir el diagrama visual de sintaxisDECRYPT_DATAKEY_INTEGERDECRYPT_DATAKEY_BIGINT( datos cifrados)

Decimal:

Leer diagrama de sintaxisOmitir el diagrama visual de sintaxisDECRYPT_DATAKEY_DECIMAL( datos cifrados,31,precisión,0 , escala )

Serie:

Leer diagrama de sintaxisOmitir el diagrama visual de sintaxisDECRYPT_DATAKEY_VARCHARDECRYPT_DATAKEY_CLOBDECRYPT_DATAKEY_VARGRAPHICDECRYPT_DATAKEY_DBCLOB( datos cifrados),ccsid-constante

Bit:

Leer diagrama de sintaxisOmitir el diagrama visual de sintaxisDECRYPT_DATAKEY_BIT( datos cifrados)

El esquema es SYSIBM.

datos cifrados
Una expresión que devuelve un valor VARBINARY o BLOB integrado. El valor debe devolverse en el mismo formato que devuelve la función ENCRYPT_DATAKEY.
ccsid-constante
Constante entera que especifica el CCSID en el que la función de descifrado debe devolver los datos. El valor debe ser uno de los valores CCSID en DECP. Si el resultado de la función es VARCHAR, el CCSID especificado debe ser un SBCS o un CCSID MIXTO. Si el resultado de la función es CLOB, el CCSID especificado debe ser un CCSID MIXED si el esquema de codificación es Unicode; de lo contrario, el CCSID especificado debe ser un CCSID SBCS o MIXED. Si el resultado de la función VARGRAPHIC o DBCLOB, el CCSID especificado debe ser un CCSID DBCS. Véase Esquema de codificación y reglas CCSID para cadenas para consideraciones especiales relativas a CCSID 367.
Si no se especifica ccsid cuando los datos cifrados son una cadena de caracteres o gráficos, el valor predeterminado se determina a partir del esquema de codificación y el tipo de datos del resultado de la siguiente manera:
  • Para instrucciones SQL estáticas, la opción de enlace ENCODING del plan o paquete o la opción APPLICATION ENCODING SCHEME de la instrucción CREATE o ALTER para una función escalar SQL compilada, un procedimiento SQL nativo o un desencadenador avanzado.
  • Para sentencias SQL dinámicas, el valor del registro especial APPLICATION ENCODING.
El CCSID predeterminado del resultado se determina a partir del tipo de datos del resultado:
  • VARCHAR: el CCSID de resultado predeterminado es el CCSID de datos mixtos para el esquema de codificación.
  • CLOB: el resultado predeterminado CCSID es el CCSID de datos mixtos para el esquema de codificación.
  • VARGRAPHIC o DBCLOB: el resultado predeterminado CCSID es el DBCS CCSID para el esquema de codificación.
precisión
Constante entera con un valor mayor o igual a 1 y menor o igual a 31.
escala
Constante entera mayor o igual que cero y menor o igual que precisión. El valor especifica la escala del resultado.
El tipo de datos del resultado de la función viene determinado por el nombre de la función de descifrado que se invoque. El nombre de la función de descifrado debe indicar el tipo de datos del valor original que fue cifrado por la función ENCRYPT_DATAKEY.
Tabla 1. Funciones de descifrado de claves de datos y tipo de datos del resultado
Función Tipo de datos del primer argumento Tipo de datos original de los datos cifrados Tipo de datos del resultado de la función
DECRYPT_DATAKEY_INTEGER VARBINARY ENTERO ENTERO
DESCIFRAR_DATAKEY_BIGINT VARBINARY BIGINT BIGINT
DESCIFRAR_DATAKEY_DECIMAL VARBINARY DECIMAL DECIMAL (precisión, escala )
DECRYPT_DATAKEY_BIT VARBINARY CHAR FOR BIT DATA, VARCHAR FOR BIT DATA 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

El atributo de longitud del resultado es el atributo de longitud del tipo de datos de datos cifrados menos 8 bytes. Si una función devuelve un tipo de datos de cadena, el atributo de longitud del resultado es el atributo de longitud del tipo de datos de datos cifrados menos 16 bytes. La longitud real del resultado es la longitud de la cadena original que se cifró. Si los datos cifrados incluyen bytes más allá de la cadena cifrada, estos bytes no son devueltos por la función.

Si el primer argumento es nulo, el resultado puede ser nulo; si el primer argumento es nulo, el resultado es el valor nulo.

Si el tipo de datos del resultado es una cadena, los datos cifrados se descifran al CCSID original y, a continuación, el resultado intermedio se convierte al CCSID especificado para el resultado. Si el tipo de datos del resultado es VARCHAR FOR BIT DATA, el CCSID del resultado es 65535. De lo contrario, si el tipo de datos del resultado es VARCHAR, CLOB, DBCLOB o VARGRAPHIC, el CCSID del resultado es ccsid. Si los datos se descifran utilizando un CCSID diferente al valor cifrado originalmente, es posible que se produzca una expansión al convertir el valor descifrado a este CCSID. En tales situaciones, el valor de los datos cifrados debe convertirse primero en una cadena de longitud variable con un mayor número de bytes antes de realizar el descifrado.

Ejemplo

Descifre el valor de la columna PROTECTED_SSN VARBINARY. Los datos cifrados eran originalmente una cadena de caracteres.

SELECT DECRYPT_DATAKEY_VARCHAR(PROTECTED_SSN)
FROM CUSTOMER
WHERE CID = ?

No se especificó el CCSID para el resultado, por lo que se establece por defecto como se describe para el parámetro ccsid.

fin del cambio