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] >