Funciones escalares DECRYPT_BINARY, DECRYPT_BIT, DECRYPT_CHAR y DECRYPT_DB
Las funciones de descifrado devuelven un valor que es el resultado de descifrar los datos cifrados. Las funciones de descifrados pueden descifrar solo los valores que están cifrados mediante la función ENCRYPT_TDES.
El esquema es SYSIBM.
La contraseña utilizada para el descifrado es el valor de la cadena de contraseña o el valor de CONTRASEÑA DE ENCRYPTION, que se asigna mediante la instrucción SET ENCRYPTION PASSWORD.
- datos cifrados
- Una expresión que devuelve un valor de datos completo y cifrado de un tipo de datos CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, BINARY o VARBINARY. La cadena de datos debe haber sido cifrada utilizando la función ENCRYPT_TDES. El atributo de longitud debe ser mayor o igual que 0 (cero) y menor o igual que 32672.
- cadena de contraseña
- Expresión que devuelve un valor CHAR o VARCHAR con al menos 6 bytes y no más de 127 bytes. Esta expresión debe ser la misma contraseña que se utilizó para cifrar los datos o el descifrado dará como resultado un valor diferente al que se cifró originalmente. Para mayor seguridad, la cadena de contraseña debe especificarse utilizando una variable de host en lugar de una constante de cadena. Si el valor del argumento de contraseña es nulo o no se proporciona, los datos se descifrarán utilizando el valor ENCRYPTION PASSWORD, que debe haber sido asignado por la sentencia SET ENCRYPTION PASSWORD.
Para una instrucción SQL estática, se recomienda que la contraseña se especifique con una variable de host en lugar de con una constante de cadena.
- DEFAULT
- Los datos se descifran utilizando el valor ENCRYPTION PASSWORD, que debe haber sido asignado por la sentencia SET ENCRYPTION PASSWORD.
- ccsid-constant
- Una constante entera que especifica el CCSID en el que la función de descifrado debe devolver los datos. Si se especifica DECRYPT_BIT o DECRYPT_BINARY, no se debe especificar ccsid-constant. El valor por omisión es
- La opción de enlace ENCODING del plan o paquete o la opción SCHEMA DE ENCODING DE APLICACIÓN de la instrucción CREATE PROCEDURE o ALTER PROCEDURE para procedimientos SQL nativos que contienen instrucciones SQL estáticas
- El valor del registro especial APPLICATION ENCODING para sentencias SQL dinámicas
| Función | Tipo del primer argumento | Tipo real de datos cifrados | Resultado |
|---|---|---|---|
| DECRYPT_BINARY | PARA DATOS BIT 1, BINARIOS, VARBINARIOS | Cualquier cadena (excepto para LOB) | VARBINARY |
| DECRYPT_BIT | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | CHAR, VARCHAR | VARCHAR FOR BIT DATA |
| DECRYPT_BIT | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | GRÁFICO, VARGRÁFICO ( UTF16 ) | Advertencia o error Si se devuelve una advertencia, el resultado es VARCHAR FOR BIT DATA |
| DECRYPT_BIT | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | GRÁFICO, VARGRÁFICO (no UTF16 ) | Advertencia o error Si se devuelve una advertencia, el resultado es VARCHAR FOR BIT DATA |
| DECRYPT_BIT | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | BINARY, VARBINARY | Advertencia o error Si se devuelve una advertencia, el resultado es VARCHAR FOR BIT DATA |
| DECRYPT_CHAR | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | CHAR, VARCHAR | VARCHAR(3) |
| DECRYPT_CHAR | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | GRÁFICO, VARGRÁFICO ( UTF16 ) | VARCHAR(3) |
| DECRYPT_CHAR | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | GRÁFICO, VARGRÁFICO (no UTF16 ) | Advertencia o error Si se devuelve una advertencia, el resultado es VARCHAR(3) |
| DECRYPT_CHAR | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | BINARY, VARBINARY | Advertencia o error Si se devuelve una advertencia, el resultado es VARCHAR(3) |
| DECRYPT_DB | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | CHAR, VARCHAR, GRAPHIC, VARGRAPHIC | VARGRAPHIC |
| DECRYPT_DB | PARA DATOS BINARIOS, BINARIOS, VARBINARIOS | BINARY, VARBINARY | Advertencia o error Si se devuelve una advertencia, el resultado es VARGRAPHIC |
- PARA DATOS DE BIT significa CHAR o VARCHAR PARA DATOS DE BIT
Si datos-cifrados incluía una sugerencia, la función no la devolverá. El atributo de longitud del resultado es el atributo de longitud de los datos cifrados menos 8 bytes. La longitud real del valor devuelto por la función coincidirá con la longitud de la cadena original que se cifró. Si datos-cifrados incluye bytes más allá de la serie cifrada, la función no los devolverá.
Administración de datos cifrados : Las funciones de descifrado solo pueden descifrar datos que se cifraron utilizando el algoritmo de cifrado Triple DES. Por lo tanto, las columnas con datos cifrados solo pueden utilizarse después de la replicación si se cifraron utilizando el algoritmo de cifrado Triple DES.
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 VARCHAR con un mayor número de bytes antes de realizar las funciones de descifrado.
El resultado puede ser nulo; si el primer argumento es nulo, el resultado es el valor nulo.
Para obtener información adicional sobre el uso de las funciones de descifrado, consulte la función escalar ENCRYPT_TDES o ENCRYPT y la función escalar GETHINT.
Protección con contraseña : para evitar el acceso involuntario a la contraseña de cifrado, no especifique la cadena de contraseña como una constante de cadena en la instrucción de origen. En su lugar, utilice el registro especial CONTRASEÑA DE ENCRIPTACIÓN o especifique la contraseña utilizando una variable de host.
SET ENCRYPTION PASSWORD ='Ben123';
INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES('289-46-8832');
SELECT DECRYPT_CHAR(SSN) FROM EMP;Este ejemplo devuelve el valor «289-46-8832».
SELECT DECRYPT_CHAR(SSN,'Ben123') FROM EMP;Este ejemplo devuelve el valor «289-46-8832».
SET ENCRYPTION PASSWORD ='Ben123';
INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES('289-46-8832');
SELECT DECRYPT_CHAR(SSN) FROM EMP; SELECT DECRYPT_CHAR(CAST(SSN AS VARCHAR(57)),
'Ben123',1208)
FROM EMP;En el primer caso, cuando los datos no se convierten a un valor más largo, el resultado es un valor VARCHAR(11). En el segundo caso, para permitir la expansión, SSN se convierte en VARCHAR(57)
(11 * 3 + 24). Al asignar un valor más largo a los datos, se permite una expansión tres veces mayor en el resultado normal de VARCHAR(11). La expansión por tres se asocia a menudo con el peor caso de conversión de ASCII o EBCDIC a Unicode UTF-8. En ambos casos de este ejemplo, el resultado es el valor VARCHAR(11) '289-46-8832'.
