Encriptacion SQL
Hola!
¿alguien sabe donde puedo encontrar un algoritmo para encriptar/desencriptar datos en Oracle?
gracias
¿alguien sabe donde puedo encontrar un algoritmo para encriptar/desencriptar datos en Oracle?
gracias
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
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
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
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
