Descriptografar DBMS_CRYPTO.HASH c/ RAWTOHEX

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Olá, Boa Tarde.
Ao criptografar com PL SQL utilizando DBMS_CRYPTO.HASH e RAWTOHEX a senha " vitellozzi " obtenho a senha " 2e834a6f5a3ffa46998428e656cabe97 ".

Selecionar tudo

SELECT LOWER((DBMS_CRYPTO.HASH( RAWTOHEX('vitellozzi'), 2))) FROM DUAL;
Como faço para descriptografar a senha " 2e834a6f5a3ffa46998428e656cabe97 " para " vitellozzi " ?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Aqui tem um exemplo:

https://docs.oracle.com/database/121/AR ... m#ARPLS665

Selecionar tudo

DECLARE
   input_string       VARCHAR2 (200) :=  'Secret Message';
   output_string      VARCHAR2 (200);
   encrypted_raw      RAW (2000);             -- stores encrypted binary text
   decrypted_raw      RAW (2000);             -- stores decrypted binary text
   num_key_bytes      NUMBER := 256/8;        -- key length 256 bits (32 bytes)
   key_bytes_raw      RAW (32);               -- stores 256-bit encryption key
   encryption_type    PLS_INTEGER :=          -- total encryption type
                            DBMS_CRYPTO.ENCRYPT_AES256
                          + DBMS_CRYPTO.CHAIN_CBC
                          + DBMS_CRYPTO.PAD_PKCS5;
   iv_raw             RAW (16);

BEGIN
   DBMS_OUTPUT.PUT_LINE ( 'Original string: ' || input_string);
   key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);
   iv_raw        := DBMS_CRYPTO.RANDOMBYTES (16);
   encrypted_raw := DBMS_CRYPTO.ENCRYPT
      (
         src => UTL_I18N.STRING_TO_RAW (input_string,  'AL32UTF8'),
         typ => encryption_type,
         key => key_bytes_raw,
         iv  => iv_raw
      );
      
    dbms_output.put_line('Encrypted: '||encrypted_raw);  
      
    -- The encrypted value "encrypted_raw" can be used here

   decrypted_raw := DBMS_CRYPTO.DECRYPT
      (
         src => encrypted_raw,
         typ => encryption_type,
         key => key_bytes_raw,
         iv  => iv_raw
      );
   output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');
 
   DBMS_OUTPUT.PUT_LINE ('Decrypted string: ' || output_string); 
 
END;
Este programa vai gerar o seguinte:

Selecionar tudo

Original string: Secret Message
Encrypted: 3873577D1C8DD73D827DC9AE77FB9FFF
Decrypted string: Secret Message
Pelo que eu sei, não é possível descriptografar um HASH... Um hash é como se fosse a impressão digital da sua string. Serve pra comparar se o hash que você tem é igual o hash que ta sendo informado.
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Olá dr_gori, Boa Tarde.
Realmente com DBMS_CRYPTO.ENCRYPT e DBMS_CRYPTO.DECRYPT dá certo ...
Mas, no meu caso foi DBMS_CRYPTO.HASH com RAWTOHEX como inverter ???

Abraços
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Agora que visualizei ... :
Pelo que eu sei, não é possível descriptografar um HASH... Um hash é como se fosse a impressão digital da sua string. Serve pra comparar se o hash que você tem é igual o hash que ta sendo informado.
Então sem chances, agradeço mesmo assim !!!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes