Criptografia
-
- Rank: Programador Sênior
- Mensagens: 46
- Registrado em: Ter, 24 Ago 2004 2:02 pm
- Localização: São Paulo
- Contato:
Gostaria de saber como q faço para criptografar uma senha e depois poder descriptografar. Como posso fazer isso?! existe alguma função do Oracle ou teria q criar algum script para isso?!
- dr_gori
- Moderador
- Mensagens: 5018
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Depende o caso... Você disse que quer criptografar uma senha e depois descriptografar. Nesse caso, a melhor forma é usar um HASH, ou seja, você gera uma chave única da sua senha que é impossível de descriptografar. Daí, você apenas compara essa chave com a chave que o usuário digitou... (dessa forma, nem mesmo um DBA ou as pessoas que criaram o sistema conseguem ver a senha que o user cadastrou).
Aqui tem um exemplo, tirado do AskTom:
http://asktom.oracle.com/pls/ask/f?p=49 ... 5412348059
Agora, se você quer criptografar E descriptografar informações (por exemplo, a coluna de salários dos funcionários). Daí você pode usar uma DBMS do oracle. A Obfuscation toolkit. Este exemplo também foi tirado do asktom...
http://asktom.oracle.com/pls/ask/f?p=49 ... 1026226790
Aqui tem um exemplo, tirado do AskTom:
http://asktom.oracle.com/pls/ask/f?p=49 ... 5412348059
declare
function digest( p_username in varchar2, p_password in varchar2 ) return varchar2
is
begin
return ltrim( to_char( dbms_utility.get_hash_value(
upper(p_username)||'/'||upper(p_password),
1000000000,
power(2,30) ),
rpad( 'X',29,'X')||'X' ) );
end digest;
begin
for x in ( select username from all_users where rownum < 20 )
loop
dbms_output.put_line( 'User: ' || rpad( x.username , 30 ) ||
' digest: ' || digest( x.username, 'TIGER' )
);
end loop;
end;
/
User: SYS digest: 6869FA1A
User: SYSTEM digest: 79F08AFC
User: OUTLN digest: 5ABFB255
User: DBSNMP digest: 43415F6B
User: TRACESVR digest: 49CF26F6
User: CTXSYS digest: 4910C297
User: OEM digest: 69463BC2
User: ORDSYS digest: 6F048B2B
User: ORDPLUGINS digest: 6547459C
User: MDSYS digest: 43C0B367
User: AURORA$ORB$UNAUTHENTICATED digest: 5073BBFC
User: WEB$CDEJESUS digest: 6FB5CDB6
User: SCOTT digest: 4307767C
User: WEB$SMAYFIEL digest: 71ED5065
User: UTILS digest: 5B7912B7
User: OAS_PUBLIC digest: 502BAE3A
User: WEBDB digest: 5A7AC149
User: WEB$RDRISCOL digest: 3E72D3F6
User: WEB$KWARREN digest: 7123F5A1
PL/SQL procedure successfully completed.
Agora, se você quer criptografar E descriptografar informações (por exemplo, a coluna de salários dos funcionários). Daí você pode usar uma DBMS do oracle. A Obfuscation toolkit. Este exemplo também foi tirado do asktom...
http://asktom.oracle.com/pls/ask/f?p=49 ... 1026226790
ops$tkyte@DEV816> variable x varchar2(25)
ops$tkyte@DEV816>
ops$tkyte@DEV816> exec :x := 'How Now Brown Cow';
PL/SQL procedure successfully completed.
ops$tkyte@DEV816>
ops$tkyte@DEV816> declare
2 l_data varchar2(255);
3 begin
4 l_data := rpad( :x, (trunc(length(:x)/8)+1)*8, chr(0) );
5
6 dbms_obfuscation_toolkit.DESEncrypt
7 ( input_string => l_data,
8 key_string => 'MagicKey',
9 encrypted_string=> :x );
10 end;
11 /
PL/SQL procedure successfully completed.
ops$tkyte@DEV816>
ops$tkyte@DEV816> print x
X
-------------------------
Òr
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Qui, 06 Out 2005 4:08 pm
- Localização: Pelotas - RS
---
Rogerio Albandes
PipeGrep Conectividade Ip - www.pipegrep.com.br
Fone: 53 3222-3366 Cel: 53 8401-4872
Rogerio Albandes
PipeGrep Conectividade Ip - www.pipegrep.com.br
Fone: 53 3222-3366 Cel: 53 8401-4872
Eu venho do mysql , onde tem a função crypt() e a md5().
Apenas quero guardar as senhas dos usuarios de um sistema escrito em delphi, mas como tenho uma parte escrita e php, quero que esta criptografia seja feita pelo banco
Apenas quero guardar as senhas dos usuarios de um sistema escrito em delphi, mas como tenho uma parte escrita e php, quero que esta criptografia seja feita pelo banco
- dr_gori
- Moderador
- Mensagens: 5018
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Infelizmente no ORACLE essa função não existe. Você terá que criar uma própria. (Essa DBMS usada no segundo exemplo acima é a solução p/ o seu problema: dbms_obfuscation_toolkit.
Ela é instalada junto com o ORACLE. Dá uma estudada nela! Qualquer dúvida, manda pra gente! Mas basicamente o que você tem que fazer, é criar uma função com as rotinas usadas nesse exemplo acima... (Que encripta e desencripta)...

Ela é instalada junto com o ORACLE. Dá uma estudada nela! Qualquer dúvida, manda pra gente! Mas basicamente o que você tem que fazer, é criar uma função com as rotinas usadas nesse exemplo acima... (Que encripta e desencripta)...

-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Qui, 13 Out 2005 12:18 pm
- Localização: Rio de Janeiro
Este pacote de criptografia aceita qual tamanho maximo de texto para ser criptografado. Fiz um teste por aqui com um texto e com um atmanho de chave e se aumentasse o tamanho e diminuisse o tamanho da chave ou do texto dava erro.
Tem alguma referencia sobre tamanho ideal de chave e de texto.
Outra coisa, quando damos um wrap no codigo o que estiver entre aspas (texto) ele não e wrapeado. Fica visivel, alguma dica?
Tem alguma referencia sobre tamanho ideal de chave e de texto.
Outra coisa, quando damos um wrap no codigo o que estiver entre aspas (texto) ele não e wrapeado. Fica visivel, alguma dica?
- dr_gori
- Moderador
- Mensagens: 5018
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Poxa, não to tendo tempo pra testar aqui o tamanho máximo. Só sei que deve ser múltiplo de 8 caracteres. (veja o exemplo, tem um RPDAD que preenche com chr(0) a string.
Boa tarde pessoal, sou novo em Oracle, e não entendi muito bem a parte de criptografia, sei que existe pacotes no Oracle que podem ser utilizados para fazer esta operação. Mas como faço para criar uma funçao utilizando o DBMS_OBFUSCATION_TOOLKIT.DESEncrypt? Eu teria que utilizar uma função para encriptar e outra para desencriptar é isso?, no caso DBMS_OBFUSCATION_TOOLKIT.DESDecrypt?
alguém poderia me passar uma função de exemplo simples de função de criptografia, pois não entendi como usar esse o DBMS_OBFUSCATION_TOOLKIT
seria algo mais ou menos assim?
Agradeço desde já o/
alguém poderia me passar uma função de exemplo simples de função de criptografia, pois não entendi como usar esse o DBMS_OBFUSCATION_TOOLKIT

seria algo mais ou menos assim?
CREATE OR REPLACE FUNCTION fn_criptografia
(
p_login IN RAW
,p_senha IN RAW
,p_senha_encriptada OUT RAW
) RETURN RAW AS
v_result RAW(128);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DESEncrypt (p_login, p_senha, p_senha_encriptada);
RETURN v_result;
END;
Agradeço desde já o/
Só gostaria de um exemplo bem simples, para depois eu criar a minha propria chaveMaikew escreveu:Boa tarde pessoal, sou novo em Oracle, e não entendi muito bem a parte de criptografia, sei que existe pacotes no Oracle que podem ser utilizados para fazer esta operação. Mas como faço para criar uma funçao utilizando o DBMS_OBFUSCATION_TOOLKIT.DESEncrypt? Eu teria que utilizar uma função para encriptar e outra para desencriptar é isso?, no caso DBMS_OBFUSCATION_TOOLKIT.DESDecrypt?
alguém poderia me passar uma função de exemplo simples de função de criptografia, pois não entendi como usar esse o DBMS_OBFUSCATION_TOOLKIT![]()
seria algo mais ou menos assim?
CREATE OR REPLACE FUNCTION fn_criptografia ( p_login IN RAW ,p_senha IN RAW ,p_senha_encriptada OUT RAW ) RETURN RAW AS v_result RAW(128); BEGIN DBMS_OBFUSCATION_TOOLKIT.DESEncrypt (p_login, p_senha, p_senha_encriptada); RETURN v_result; END;
Agradeço desde já o/

-
- Rank: Programador Sênior
- Mensagens: 52
- Registrado em: Sáb, 29 Set 2007 12:59 am
- Localização: Araraquara-SP
- Contato:
Ricardo Neves
Analista e Instrutor Oracle Developer
Java Developer (JPA/JSF/Hibernate/WebServices/EJB)
Analista e Instrutor Oracle Developer
Java Developer (JPA/JSF/Hibernate/WebServices/EJB)
Você poderá criar um função para utilizar MD5 dessa forma no oracle
create or replace function fnc_md5 (p_valor varchar) return varchar2 is
v_entrada varchar2(2000) := p_valor;
hexkey varchar2(32) := null;
begin
hexkey := rawtohex(dbms_obfuscation_toolkit.md5(input => utl_raw.cast_to_raw(v_entrada)));
return nvl(hexkey,'');
end;
/
Obrigado. Eu já conhecia essa função de MD5, porém eu preciso desencriptar a senha, preciso do valor original dela, pois eu não vou comparar o valor do hash com outro hash gerado a partir da senha digitada, vou precisar usar a senha original em outro local, só queria um exemplo de como construir uma chave, o mais simples possivel de como utilizar a dbms_obfuscation_toolkit.DESEncrypt() e dbms_obfuscation_toolkit.DESDEcrypt() se possível.ricards escreveu:Você poderá criar um função para utilizar MD5 dessa forma no oracle
create or replace function fnc_md5 (p_valor varchar) return varchar2 is v_entrada varchar2(2000) := p_valor; hexkey varchar2(32) := null; begin hexkey := rawtohex(dbms_obfuscation_toolkit.md5(input => utl_raw.cast_to_raw(v_entrada))); return nvl(hexkey,''); end; /

-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes