MD5 (Algoritmo de Resumen del Mensaje 5) es un algoritmo de cifrado de 128 relativamente seguro. Una codificación de MD5 es generalmente un número de 32 dÃgitos hexadecimal.
En PL/SQL podemos cifrar cadenas de texto usando la función DBMS_OBFUSCATION_TOOLKIT.MD5 de esta forma:
PLSQL:
-
--Se obtiene un texto cifrado en "crudo"
-
--Se transforma a un número hexadecimal en minúsculas
-
END;




3 Comentarios
Qué tal, me sirvió muchÃsimo tu código, solo que lo modifiqué y lo hice como una función, para poder utilizarlo en query’s, procedimientos almacenados, triggers, etc.
CREATE OR REPLACE FUNCTION ENCRIPTAR(ptexto VARCHAR2) RETURN VARCHAR2 IS
cifrado_raw VARCHAR2(100);
texto_cifrado VARCHAR2(100);
BEGIN
cifrado_raw := DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => ptexto);
SELECT RAWTOHEX(cifrado_raw) INTO texto_cifrado FROM dual;
return texto_cifrado;
END ENCRIPTAR;
Algo asÃ:
select encriptar(usu_psw), usu_id from t_usuario;
Hay alguna forma de desencriptar ese texto encriptado anteriormente?
Por ejemplo, la funcion anterior en este query:
select ENCRIPTAR(‘prueba’) from dual
devuelve C893BAD68927B457DBED39460E6AFD62
pero yo quiero que una vez este dato esté almacenado, poder recuperar la cadena ‘prueba’.
¿Es posible?
Por que yo hice otras 2 funciones pero con otros algoritmos (DBMS_CRYPTO.des_cbc_pkcs5), el problema es que las cadenas resultantes se hacen demasiado largas.
Gracias por el aporte C#ristian,
Puedes ver info sobre lo que preguntas acá
http://www.databasejournal.com/features/oracle/article.php/3358671/Decrypting-Oracles-DBMSOBFUSCATIONTOOLKIT.htm