Banco de Dados

Ξ Deixe um comentário

Criptografia MD5 com PL/SQL

publicado por Marcelo Dias Oliveira

Criptografia MD5 com PL/SQLOlá prezados companheiros de TI.

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]

Autor

Formado em Sistema de Informação com Ênfase em Análise de sistemas e Processamento de Dados. Pós-graduado em Gestão estratégica de Negócios. Certificação Scrum Master. Conhecedor profundo de metodologias Ágeis como: Lean, Kanban, XP e processos para Startup. Além de possuir amplo conhecimento do PMI. Especialista em desenvolvimento Web e tendo profunda experiência com os principais Bancos de Dados do mercado.

Marcelo Dias Oliveira

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes