Encriptacion SQL

tortuga
29 de Diciembre del 2005
Hola!
¿alguien sabe donde puedo encontrar un algoritmo para encriptar/desencriptar datos en Oracle?
gracias

Fufo
29 de Diciembre del 2005
Si.

Busca informacion sobre esto :

DBMS_OBFUSCATION_TOOLKIT

tortuga
29 de Diciembre del 2005
Muchas gracias!
dejo aquí lo q he encontrado por si a alguien más le sirve

http://www.orafaq.com/scripts/plsql/password.txt


CREATE OR REPLACE PACKAGE PASSWORD AS
function encrypt(i_password varchar2) return varchar2;
function decrypt(i_password varchar2) return varchar2;
END PASSWORD;
/
show errors


CREATE OR REPLACE PACKAGE BODY PASSWORD AS

-- key must be exactly 8 bytes long
c_encrypt_key varchar2(8) := 'key45678';

function encrypt (i_password varchar2) return varchar2 is
v_encrypted_val varchar2(38);
v_data varchar2(38);
begin
-- Input data must have a length divisible by eight
v_data := RPAD(i_password,(TRUNC(LENGTH(i_password)/8)+1)*8,CHR(0));

DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(
input_string => v_data,
key_string => c_encrypt_key,
encrypted_string => v_encrypted_val);
return v_encrypted_val;
end encrypt;

function decrypt (i_password varchar2) return varchar2 is
v_decrypted_val varchar2(38);
begin
DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT(
input_string => i_password,
key_string => c_encrypt_key,
decrypted_string => v_decrypted_val);
return v_decrypted_val;
end decrypt;


end PASSWORD;
/
show errors

-- Test if it is working...
select password.encrypt('PASSWORD1') from dual;
select password.decrypt(password.encrypt('PASSWORD1')) from dual;

Saludos

Fufo
29 de Diciembre del 2005
Plas ¡¡ Plas ¡¡ Plas ¡¡ ( Aplausos varios )

Mu bien, sabes buscar. Pero ahora tienes que usar un poco tu imaginación. Eso está bien para conocer el tema , pero para manipular datos no sirve, te ralentizaría mucho todo, ya que para hacer por ejemplo un
select *
from......
where tal = pK

a una tabla de 30 campos, haría 30 llamadas a esa función para devolver una sola fila, así que imaginate para un full scan............................................. te cargas la máquina. Desconozco si la 9i ó la 10g tienen alguna funcionalidad para hacer esto.

En cambio si te es muy util por ejmplo para mantenimientos de usuarios ( de aplicación, de clientes que se conectan por página web, etc etc etc ).

Yo utilizo una variación del que has puesto tu para los usuarios que se conectan a nuestra aplicación y los clientes que entran al area de clientes de nuestra web. Estos están dados de alta en las correspondientes tablas con su nombre / pass y la pass está encriptada con un algorritmo muy parecido al que pones pero que utiliza 4 llaves + otro de mi invención de tal manera que esa pass no se puede desencriptar ( Ni con un ataque de fuerza bruta, ya que al tercer intento se bloquea esa cuenta ). Lo que hace es encriptar la clave que el usuario ha metido y compararla con la que tiene almacenada, si coinciden OK y si no, naranjas de la china