Como estão as coisas? Espero que bem!
Estou de volta com esse breve artigo, que tem como intuito disponibilizar uma singela descrição do processo de criptografia MD5 com PL/SQL. Este exemplo tem uma variedade de aplicações.
O detalhe que chama a atenção é o uso da função RAWTOHEX e dos pacotes: OBFUSCATION e UTL_RAW.
Vamos ao dito cujo. Mas, antes que eu esqueça, atentem-se aos comentários no código… Um explicação direta estão nestes.
Como diria um velho amigo meu (Sergio Carvalho, abraço meu brother): “deixe o pau cair à folha”.
-- A função é bem simples...
create or replace function RetornaMD5 (valor varchar2) return varchar2 is
hexkey varchar2(32) := null;
begin
-- RAWTOHEX: converte os caracteres para representação hexadecimal.
-- DBMS_OBFUSCATION_TOOLKIT: o pacote DBMS_OBFUSCATION_TOOLKIT disponibiliza a API de criptografia.
-- UTL_RAW: de acordo com a Oracle, manipular os tipos de dados.
hexkey := rawtohex(DBMS_OBFUSCATION_TOOLKIT.md5(input => UTL_RAW.cast_to_raw(valor)));
return nvl(hexkey,'');
end;
O destaque está no uso do pacote: DBMS_OBFUSCATION_TOOLKIT. Perceberam?
A grosso modo, diria:
1º RAWTOHEX;
Converte os caracteres para hexadecimal. Sendo uma função, aceita uma variedade bem ampla de tipos de dados: Long, Long RAW, CLOB, BLOB, BFILE e etc. retornando um valor VARCHAR2 com a representação hexadecimal.
2º DBMS_OBFUSCATION_TOOLKIT;
Esse pacote disponibiliza o método MD5 e outros bem interessante. Por exemplo, a partir do Oracle8i, está disponível a criptografia DES, enquanto no Oracle9i tem-se a criptografia DES3.
3º UTL_RAW;
Nesse ponto há manipulação dos dados, tendo como foco principal: a conversão dos tipos. Outras possíveis opções de uso estarão relacionadas com os valores de atributos, como: comprimento, altura, tamanho e outros.
Abaixo temos a função sem os comentários.
create or replace function RetornaMD5 (valor varchar2) return varchar2 is
hexkey varchar2(32) := null;
begin
hexkey := rawtohex(DBMS_OBFUSCATION_TOOLKIT.md5(input => UTL_RAW.cast_to_raw(valor)));
return nvl(hexkey,'');
end;
Para visualizar o uso, faça o seguinte:
select RetornaMD5('Deixe o pau cair a folha') from dual;
É isso aí. Não falei que seria breve.
Use da forma que achar melhor.
Abraço e até a próxima.
Saúde e paz!!!
[Crédito da Imagem: Criptografia – ShutterStock]
Leave a Comment