Aquí doy un ejemplo para encriptar la contraseña en Oracle usando el paquete DBMS_CRYPTO.
Para demostrar esto, he creado la siguiente tabla para almacenar el tipo de datos varchar2 del ID de usuario (USER_ID) y para almacenar el tipo de datos sin procesar de la contraseña cifrada (ENC_PSW).
Crear tabla
SET DEFINE OFF; CREATE TABLE ENC_DATA ( USER_ID VARCHAR2(20 BYTE), ENC_PSW RAW(2000) ) / ALTER TABLE ENC_DATA ADD ( CONSTRAINT ENC_DATA_PK PRIMARY KEY (USER_ID)) /
Un ejemplo para cifrar la contraseña en Oracle
Ahora a través del siguiente programa PL/SQL, almacenaremos la contraseña mypassword123 para el ID de usuario SCOTT . La clave es la parte vital para el cifrado porque para descifrarlo necesita usar la misma clave. Puede utilizar cualquier tecla alfanumérica de 16 caracteres de longitud. Para obtener más información sobre el paquete DBMS_CRYPTO, consulte la documentación de Oracle.
SET SERVEROUTPUT ON; DECLARE l_user_id enc_data.USER_ID%TYPE := 'SCOTT'; l_user_psw VARCHAR2 (2000) := 'mypassword123'; l_key VARCHAR2 (2000) := '1234567890999999'; l_mod NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_enc RAW (2000); BEGIN l_user_psw := DBMS_CRYPTO.encrypt (UTL_I18N.string_to_raw (l_user_psw, 'AL32UTF8'), l_mod, UTL_I18N.string_to_raw (l_key, 'AL32UTF8')); DBMS_OUTPUT.put_line ('Encrypted=' || l_user_psw); INSERT INTO enc_data (user_id, enc_psw) VALUES (l_user_id, l_user_psw); COMMIT; END; /
Salida
Encrypted=132BEDB1C2CDD8F23B5A619412C27B60 PL/SQL procedure successfully completed.
Verifique los datos en la tabla ENC_DATA:
SELECT * FROM enc_data;
USER_ID ENC_PSW SCOTT 132BEDB1C2CDD8F23B5A619412C27B60
En el ejemplo anterior, cifró la contraseña para el ID de usuario SCOTT y la almacenó en la tabla enc_data. Ahora debajo está el programa PL/SQL para obtener la contraseña y descifrarla.
Un ejemplo para descifrar la contraseña en Oracle
SET SERVEROUTPUT ON; DECLARE l_user_id enc_data.user_id%TYPE := 'SCOTT'; l_user_psw RAW (2000); l_key VARCHAR2 (2000) := '1234567890999999'; l_mod NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_dec RAW (2000); BEGIN SELECT enc_psw INTO l_user_psw FROM enc_data WHERE user_id = l_user_id; l_dec := DBMS_CRYPTO.decrypt (l_user_psw, l_mod, UTL_I18N.STRING_TO_RAW (l_key, 'AL32UTF8')); DBMS_OUTPUT.put_line ('Decrypted=' || UTL_I18N.raw_to_char (l_dec)); END; /
Salida
Decrypted=mypassword123 PL/SQL procedure successfully completed.
Véase también:
- ¿Cómo ocultar la contraseña en los formularios de Oracle?
- Cambiar la contraseña de usuario del sistema en Oracle
-
ClusterControl - Gestión avanzada de copias de seguridad - mariabackup Parte III
-
Ejemplos de SQL Server FOR JSON PATH (T-SQL)
-
Principales respuestas a 5 preguntas candentes sobre la función COALESCE en SQL Server
-
Por qué el ajuste del rendimiento de SQL es la habilidad de administración de bases de datos más importante que debe tener