Gerar HASH de CLOB ou VARCHAR - PL/SQL - Oracle

Gerar HASH de CLOB ou VARCHAR - PL/SQL - Oracle

Em alguns momentos precisamos gerar um HASH sobre VARCHAR ou CLOB para facilitar a realiza??o de consultas ou gerar esses HASH para tratar um valor muito extenso como único.

Suponha que você precise tratar um VARCHAR(4000) como único, seu SELECT vai ficar muito pesado ao realizar uma consulta, desta forma você pode criar um HASH que criptografa em 32 caracteres e usar ele como filtro garantindo assim que aquele valor é único. Agora suponha que seja um CLOB, ai complicou.

Esse era um problema que eu estava enfrentando, ent?o criei essa Function que descomplica esse problema.

Você pode usar ela direto em uma query SQL ou em PLSQL, lembrando, para query SQL você só consegue com textos até 4000 caracteres, para textos maiores você vai ter que chamar a Function dentro de um PLSQL.

Resumindo, com esta Function você criptografa qualquer valor dentro de um banco de dados Oracle.

Fa?a bom aproveito.

--

Generate HASH for CLOB or VARCHAR - PL/SQL - Oracle

At times, we need to generate a HASH on VARCHAR or CLOB to facilitate queries or generate these HASH values to treat a very extensive value as unique.

Suppose you need to treat a VARCHAR(4000) as unique, your SELECT query will become very heavy when executing a search. In this way, you can create a HASH that encrypts it into 32 characters and use it as a filter, ensuring that the value is unique. Now, suppose it's a CLOB, that's where it gets complicated.

This was a problem I was facing, so I created this Function to simplify the issue.

You can use it directly in an SQL query or in PLSQL. Please note that for SQL queries, it only works with texts up to 4000 characters, for larger texts, you'll need to call the Function within PLSQL.

In summary, with this Function, you can encrypt any value within an Oracle database.

Enjoy using it.



CREATE OR REPLACE FUNCTION GERAR_HASH( p_VALOR IN CLOB ) RETURN VARCHAR2 IS
--
-- Fun??o que gera um HASH sobre um valor CLOB ou VARCHAR repassado via parametro
--
-- Autor: Wesley David Santos
-- Skype: wesleydavidsantos		
-- https://www.dhirubhai.net/in/wesleydavidsantos
--

	v_HASH_CRIADO VARCHAR2(4000);
	
	v_LENGHT_VALOR NUMBER;
	
	v_TEXTO_PARA_HASH VARCHAR2(1600);
	
BEGIN

	v_LENGHT_VALOR := CEIL( LENGTH( P_VALOR ) );
	
	
	v_TEXTO_PARA_HASH := SUBSTR( p_VALOR, 1, 1500 );
	

	-- Recursividade
	IF v_LENGHT_VALOR > 1500 THEN
		
		v_HASH_CRIADO := GERAR_HASH( SUBSTR( p_VALOR, 1501 ) );
        
		v_TEXTO_PARA_HASH := v_TEXTO_PARA_HASH || v_HASH_CRIADO;
	
	END IF;
		
	
	SELECT dbms_obfuscation_toolkit.md5( input => UTL_RAW.cast_to_raw( v_TEXTO_PARA_HASH ) ) INTO v_HASH_CRIADO FROM DUAL;
	
	
	RETURN v_HASH_CRIADO;

END;
/
        


Teste via query SQL - Varchar - Permitido até 4000 caracteres

--
-- Teste via QUERY SQL - Permitido até 4000 caracteres
--
-- Resultado HASH: FD2B30D1C96208BA810A20ED07AA11F6
--

SELECT GERAR_HASH( 'Mussum Ipsum, cacilds vidis litro abertis. Quem num gosta di mim que vai ca?á sua turmis! Per aumento de cachacis, eu reclamis. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis. In elementis mé pra quem é amistosis quis leo.
Quem num gosta di mim que vai ca?á sua turmis! Mais vale um bebadis conhecidiss, que um alcoolatra anonimis. Delegadis gente finis, bibendum egestas augue arcu ut est. Casamentiss faiz malandris se pirulitá.
Casamentiss faiz malandris se pirulitá. Nec orci ornare consequat. Praesent lacinia ultrices consectetur. Sed non ipsum felis. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio. Mé faiz elementum girarzis, nisi eros vermeio.
Per aumento de cachacis, eu reclamis. Si u mundo tá muito paradis? Toma um mé que o mundo vai girarzis! Suco de cevadiss deixa as pessoas mais interessantis. Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl.' ) HASH_GERADO FROM DUAL;        


Teste via PL/SQL - Valores acima de 4000 caracteres

--
-- Teste via PL/SQL - Valores acima de 4000 caracteres
--
-- Resultado HASH: B63A59E494D8648145852785ECEBD86C
--

SET SERVEROUTPUT ON;

DECLARE

    v_HASH VARCHAR2(32);

BEGIN
    
    v_HASH := GERAR_HASH( 'Mussum Ipsum, cacilds vidis litro abertis.  Leite de capivaris, leite de mula manquis sem cabe?a. Detraxit consequat et quo num tendi nada. Quem num gosta di mim que vai ca?á sua turmis! Suco de cevadiss, é um leite divinis, qui tem lupuliz, matis, aguis e fermentis.
Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis. Todo mundo vê os porris que eu tomo, mas ninguém vê os tombis que eu levo!
Praesent vel viverra nisi. Mauris aliquet nunc non turpis scelerisque, eget. Quem num gosta di mim que vai ca?á sua turmis! N?o sou faixa preta cumpadi, sou preto inteiris, inteiris. Copo furadis é disculpa de bebadis, arcu quam euismod magna.
Per aumento de cachacis, eu reclamis. Si num tem leite ent?o bota uma pinga aí cumpadi! Em pé sem cair, deitado sem dormir, sentado sem cochilar e fazendo pose. Aenean aliquam molestie leo, vitae iaculis nisl.
Nec orci ornare consequat. Praesent lacinia ultrices consectetur. Sed non ipsum felis. Aenean aliquam molestie leo, vitae iaculis nisl. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio. Quem manda na minha terra sou euzis!
Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl. Quem num gosta di mé, boa gentis num é. Casamentiss faiz malandris se pirulitá. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis.
Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl. Quem num gosta di mé, boa gentis num é. Suco de cevadiss deixa as pessoas mais interessantis. N?o sou faixa preta cumpadi, sou preto inteiris, inteiris.
Vehicula non. Ut sed ex eros. Vivamus sit amet nibh non tellus tristique interdum. Cevadis im ampola pa arma uma pindureta. A ordem dos tratores n?o altera o p?o duris. Aenean aliquam molestie leo, vitae iaculis nisl.
Si num tem leite ent?o bota uma pinga aí cumpadi! Per aumento de cachacis, eu reclamis. Paisis, filhis, espiritis santis. Diuretics paradis num copo é motivis de denguis.
In elementis mé pra quem é amistosis quis leo. Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi. Per aumento de cachacis, eu reclamis. Suco de cevadiss deixa as pessoas mais interessantis.
Si num tem leite ent?o bota uma pinga aí cumpadi! Per aumento de cachacis, eu reclamis. Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl. Casamentiss faiz malandris se pirulitá.
Praesent malesuada urna nisi, quis volutpat erat hendrerit non. Nam vulputate dapibus. Casamentiss faiz malandris se pirulitá. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi.
Manduma pindureta quium dia nois paga. Todo mundo vê os porris que eu tomo, mas ninguém vê os tombis que eu levo! Diuretics paradis num copo é motivis de denguis. Pra lá, depois divoltis porris, paradis.
Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi. Interagi no mé, cursus quis, vehicula ac nisi. Delegadis gente finis, bibendum egestas augue arcu ut est. Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl.
Tá deprimidis, eu conhe?o uma cachacis que pode alegrar sua vidis. N?o sou faixa preta cumpadi, sou preto inteiris, inteiris. Interessantiss quisso pudia ce receita de bolis, mais bolis eu num gostis. Si num tem leite ent?o bota uma pinga aí cumpadi!
Mussum Ipsum, cacilds vidis litro abertis.  Leite de capivaris, leite de mula manquis sem cabe?a. Detraxit consequat et quo num tendi nada. Quem num gosta di mim que vai ca?á sua turmis! Suco de cevadiss, é um leite divinis, qui tem lupuliz, matis, aguis e fermentis.
Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis. Todo mundo vê os porris que eu tomo, mas ninguém vê os tombis que eu levo!
Praesent vel viverra nisi. Mauris aliquet nunc non turpis scelerisque, eget. Quem num gosta di mim que vai ca?á sua turmis! N?o sou faixa preta cumpadi, sou preto inteiris, inteiris. Copo furadis é disculpa de bebadis, arcu quam euismod magna.
Per aumento de cachacis, eu reclamis. Si num tem leite ent?o bota uma pinga aí cumpadi! Em pé sem cair, deitado sem dormir, sentado sem cochilar e fazendo pose. Aenean aliquam molestie leo, vitae iaculis nisl.
Nec orci ornare consequat. Praesent lacinia ultrices consectetur. Sed non ipsum felis. Aenean aliquam molestie leo, vitae iaculis nisl. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio. Quem manda na minha terra sou euzis!
Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl. Quem num gosta di mé, boa gentis num é. Casamentiss faiz malandris se pirulitá. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis.
Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl. Quem num gosta di mé, boa gentis num é. Suco de cevadiss deixa as pessoas mais interessantis. N?o sou faixa preta cumpadi, sou preto inteiris, inteiris.
Vehicula non. Ut sed ex eros. Vivamus sit amet nibh non tellus tristique interdum. Cevadis im ampola pa arma uma pindureta. A ordem dos tratores n?o altera o p?o duris. Aenean aliquam molestie leo, vitae iaculis nisl.
Si num tem leite ent?o bota uma pinga aí cumpadi! Per aumento de cachacis, eu reclamis. Paisis, filhis, espiritis santis. Diuretics paradis num copo é motivis de denguis.
In elementis mé pra quem é amistosis quis leo. Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi. Per aumento de cachacis, eu reclamis. Suco de cevadiss deixa as pessoas mais interessantis.
Si num tem leite ent?o bota uma pinga aí cumpadi! Per aumento de cachacis, eu reclamis. Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl. Casamentiss faiz malandris se pirulitá.
Praesent malesuada urna nisi, quis volutpat erat hendrerit non. Nam vulputate dapibus. Casamentiss faiz malandris se pirulitá. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi.
Manduma pindureta quium dia nois paga. Todo mundo vê os porris que eu tomo, mas ninguém vê os tombis que eu levo! Diuretics paradis num copo é motivis de denguis. Pra lá, depois divoltis porris, paradis.
Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi. Interagi no mé, cursus quis, vehicula ac nisi. Delegadis gente finis, bibendum egestas augue arcu ut est. Mauris nec dolor in eros commodo tempor. Aenean aliquam molestie leo, vitae iaculis nisl.
Tá deprimidis, eu conhe?o uma cachacis que pode alegrar sua vidis. N?o sou faixa preta cumpadi, sou preto inteiris, inteiris. Interessantiss quisso pudia ce receita de bolis, mais bolis eu num gostis. Si num tem leite ent?o bota uma pinga aí cumpadi!' );

    DBMS_OUTPUT.PUT_LINE( v_HASH );

END;
/        


GitHub: https://github.com/wesleydavidsantos/GERAR_HASH_PLSQL_ORACLE


#PLSQL #Oracle #HashEmOracle #HashPLSQL #HashCLOB #HashBLOB #HashVARCHAR #CriptografiaOracle #CriptografiaPLSQL #DBA

要查看或添加评论,请登录

Wesley David Santos的更多文章

社区洞察

其他会员也浏览了