Cifrado de

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Notael Jue, 30 Sep 2004 4:43 pm

Me pregunto cómo hago para cifrar una contraseña y luego ser capaces de descifrar. ¿Cómo puedo hacer eso?! Hay alguna función del oráculo o q crear algún script para hacer esto?!
LC_JK
Ubicación: São Paulo

Notael Vie, 01 Oct 2004 11:44 am

Depende el caso. Usted há dicho que desea cifrar y luego descifrar una contraseña. En este caso, la mejor manera es utilizar un HASH, es decir, se genera una clave única de la contraseña que es imposible de descifrar. A partir de ahí, solo comparas esta clave con la clave que el usuario introducido. (de esa manera, no un DBA o quienes crearon el sistema de pueden ver la contraseña que el usuario registrado).

Este es un ejemplo, tomado de la AskTom: http://asktom.oracle.com/pls/ask/f?p=49 ... 5412348059
Código: Seleccionar todo
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.
ahora, si desea cifrar y descifrar información (por ejemplo, los sueldos de los empleados). A continuación, puede utilizar oracle DBMS. Las herramientas de ofuscación. Este ejemplo fue también tomado de la asktom... http://asktom.oracle.com/pls/ask/f?p=49 ... 1026226790
Código: Seleccionar todo
[email protected]> variable x varchar2(25)
[email protected]>
[email protected]> exec :x := 'How Now Brown Cow';

PL/SQL procedure successfully completed.

[email protected]>
[email protected]> 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.

[email protected]>
[email protected]> print x

X
-------------------------
Òr
dr_gori
Ubicación: Portland, OR USA

Thomas F. G

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

Notael Vie, 07 Oct 2005 2:42 pm

Vengo de mysql, donde tiene la función de () de la cripta y el (md5).
Sólo quiero guardar las contraseñas de los usuarios de un sistema escrito en delphi, pero como tengo una parte escrita y php, quiero que este cifrado es realizado por el Banco
albandes
Ubicación: Pelotas - RS

---
Rogerio Albandes
PipeGrep Conectividade Ip - www.pipegrep.com.br
Fone: 53 3222-3366 Cel: 53 8401-4872

Notael Vie, 07 Oct 2005 2:48 pm

Por desgracia en ORACLE no existe esta función. Usted tendrá que crear su propio. (Este DBMS utilizado en el segundo ejemplo anterior es la solución para el problema: su dbms_obfuscation_toolkit .

Se instala junto con ORACLE. Da un estudiado le. Cualquier duda, envíanosla! Pero básicamente lo que tienes que hacer es crear una función con las rutinas que utiliza en ese ejemplo anterior. (Que cifran y descifran)...:-
dr_gori
Ubicación: Portland, OR USA

Thomas F. G

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

Notael Jue, 13 Oct 2005 12:22 pm

Este paquete de cifrado acepta qué tamaño máximo del texto a cifrar. Hice una prueba con texto y con una clave atmanho y si usted aumenta el tamaño y disminuyó el tamaño de la clave o texto de error.

Tienes referencias sobre el tamaño ideal del texto y de clave.

Otra cosa, cuando nos envuelva en el código que está entre comillas (texto) no es wrapeado. ¿Es visible, algún consejo?
alexander
Ubicación: Rio de Janeiro

Notael Vie, 14 Oct 2005 2:25 pm

Hola, no tengo tiempo para probar el tamaño máximo. Todo lo que sé es que tiene que ser múltiplo de 8 caracteres. (ver ejemplo, tiene un RPDAD que se llena con la secuencia de chr (0).
dr_gori
Ubicación: Portland, OR USA

Thomas F. G

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

Notael Jue, 09 Feb 2012 3:33 pm

Buena tarde soy nuevo en Oracle y no entiendo muy bien la parte de cifrado, sé que existe en los paquetes de Oracle que pueden utilizar para realizar esta operación. Pero cómo puedo crear una función mediante DBMS_OBFUSCATION_TOOLKIT. ¿DESEncrypt? ¿Tengo que utilizar una función para cifrar y descifrar es?, en caso de DBMS_OBFUSCATION_TOOLKIT. ¿DESDecrypt?

Alguien me podría escribir una función de ejemplo sencillo de función criptográfica, ¿entiende usted cómo utilizar esta el DBMS_OBFUSCATION_TOOLKIT:?

¿Sería algo como esto?

Gracias
Código: Seleccionar todo
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;
o /
Maikew

Notael Vie, 10 Feb 2012 7:51 am

[cita = "Maikew"] Buenas tardes chicos, soy nuevo en Oracle y no entiendo muy bien la parte de cifrado, sé que existe en los paquetes de Oracle que pueden utilizar para realizar esta operación. Pero cómo puedo crear una función mediante DBMS_OBFUSCATION_TOOLKIT. ¿DESEncrypt? ¿Tengo que utilizar una función para cifrar y descifrar es?, en caso de DBMS_OBFUSCATION_TOOLKIT. ¿DESDecrypt?

¿podría alguien me escriba una función de ejemplo sencillo de función criptográfica, porque no entiendo como usar este el DBMS_OBFUSCATION_TOOLKIT:?

¿Sería algo como esto?

CREAR o reemplazar la función fn_criptografia (p_login en RAW, RAW, p_senha_encriptada a p_senha en crudo) devolver las primas v_result primas (128);
COMENZAR DBMS_OBFUSCATION_TOOLKIT. DESEncrypt (p_login, p_senha, p_senha_encriptada);

VOLVER v_result;
FINAL;


Thank You o / [/ citar] como un ejemplo muy simple, crear mi propio:) clave
Maikew

Notael Mar, 28 Feb 2012 11:12 pm

Puede crear una función para utilizar MD5 de esta manera en oracle
Código: Seleccionar todo
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;
/
ricards
Ubicación: Araraquara-SP

Ricardo Neves
Analista e Instrutor Oracle Developer
Java Developer (JPA/JSF/Hibernate/WebServices/EJB)

Notael Vie, 02 Mar 2012 3:31 pm

[cita = "ricards"] Puede crear una función para utilizar MD5 de esta manera en oracle
Código: Seleccionar todo
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;
/
[/ citar] gracias. Ya conocía esta función MD5, sin embargo necesito descifrar la contraseña, necesito el valor original de él, porque no me va a comparar el valor hash con otro hash generado a partir de la contraseña, necesito utilizar la contraseña original en otro lugar, só quería un ejemplo de co MO construir una clave, el más sencillo posible mediante dbms_obfuscation_toolkit. () DESEncrypt y dbms_obfuscation_toolkit. DESDEcrypt () si es posible.

\":)\"
Maikew

Notael Mar, 06 Mar 2012 1:40 pm

La 10 g en adelante utilice DBMS_CRYPTO.
El DBMS_OBFUSCATION_TOOLKIT ya está discontinuado.

Abrazos,
burga
Ubicación: SP

Ricardo H. Tajiri


  • See also
    Replies
    Views
    Last Post


      Volver a PL/SQL

      ¿Quién está conectado?

      Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 16 invitados