Bem, para variar vc não nos diz nem versão exata, nem Edition do database, 
nem SO envolvido, nem a origem da string sha-1 eventualmente envolvida e/ou o 
destino (ie, se estamos falando de RDBMS Oracle -> RDBMS Oracle), nem a 
situação exata (ie, se o que vc recebe é uma string ascii que precisa ser 
hasheada em sha-1 para ser comparada com o sha-1 que vc tem no banco, OU se vc 
recebe uma string sha-1 que precisa ser convertida para ascii que é o que vc 
tem na tabela do banco Oracle, ou o que) mas DEDUZO que vc quer hashear E QUE é 
uma versão recente de RDBMS, então palpita-se :
  
   a) antes de mais nada veja em 
http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:3186909500346211026#3193199100346066009
 que nas versões mais recentes a Oracle te dá no RDBMS Oracle a built-in 
DBMS_CRYPTO, que vc pode usar para hashear uma string com  sha-1 : eu disse 
HASHEAR, e não ENCRIPTAR, pois sha-1 é um mecanismo de hashing, ie, que Não tem 
Volta, vc Não Consegue "decriptografar" a string , só regerar o hash em cima da 
mesma string origem para o comparar com um valor sha-1 que vc já tinha
   
   b) iirc DBMS_CRYPTO só trabalha com RAWs e não com VARCHAR2, então uma 
conversão com UTL_RAW vai ser precisa aí
   
==> Um exemplo que eu tinha nos meus guardados (provavelmente vindo da 
internet, mas não possuo o site original para creditar) :

declare
  p_string varchar2(2000) := 'Hello world !';
  lv_hash_value_md5    raw (100);
  lv_hash_value_sh1    raw (100);
  lv_varchar_key_md5   varchar2 (32);
  lv_varchar_key_sh1   varchar2 (40);
begin
  lv_hash_value_md5 :=
     dbms_crypto.hash (src   => utl_raw.cast_to_raw (p_string),
                       typ   => dbms_crypto.hash_md5);

  -- convert into varchar2
  select   lower (to_char (rawtohex (lv_hash_value_md5)))
    into   lv_varchar_key_md5
    from   dual;

  lv_hash_value_sh1 :=
     dbms_crypto.hash (src   => utl_raw.cast_to_raw (p_string),
                       typ   => dbms_crypto.hash_sh1);

  -- convert into varchar2
  select   lower (to_char (rawtohex (lv_hash_value_sh1)))
    into   lv_varchar_key_sh1
    from   dual;

  --
  dbms_output.put_line('String to encrypt : '||p_string);
  dbms_output.put_line('MD5 encryption : '||lv_varchar_key_md5);
  dbms_output.put_line('SHA1 encryption : '||lv_varchar_key_sh1);
end;

 []s
 
   Chiappa

--- Em oracle_br@yahoogrupos.com.br, Igor Alves <igor.alvez@...> escreveu
>
> Gostaria de uma ajuda de vocês.
> 
> Preciso validar uma senha que foi criptografa em sha-1 no oracle. o campo
> da senha é varchar2.
> 
> Seria assim:
> select Usuario from usuarios WHERE password= sha1(123)
> 
> Igor Alves
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a