Oracle - ENCRIPTACION

 
Vista:

ENCRIPTACION

Publicado por PRM (2 intervenciones) el 14/05/2004 01:41:16
Hola a todos

alguien conoce como encriptar campos especificos en tablas, es decir algo así como que cuando creo una tabla le diga que es un campo que en todo select aparecerá encriptado con el fin de que no lo puedan observar ??

gracias
PRM
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ENCRIPTACION

Publicado por Harold (697 intervenciones) el 20/05/2004 23:44:09
OJO. CUIDADO CON ESTO!

create or replace package data_cryption as
function BinaryConvert(mask char) return char;
function cryption(mask char,data char) return char;
end data_cryption;
/

create or replace package body data_cryption AS
function BinaryConvert(mask char) return char is
outer_loop number;
value number;
divisor number;
r1 varchar2(30);
begin
r1 := \'\';
value := ascii(mask);
divisor := 128;
for outer_loop in 0..7 loop
if trunc(value/divisor) = 1 then
r1 := r1 || \'1\';
else
r1 := r1 || \'0\';
end if;
value := value mod divisor;
divisor := divisor / 2;
end loop;
return r1;
end;
function cryption(mask char,data char) return char is
outer_loop number;
inner_loop number;
r1 varchar2(8);
r2 varchar2(8);
r3 number;
result varchar2(40);
divisor number;
begin
result := \'\';
for outer_loop in 1..length(mask) loop
r1 := BinaryConvert(substr(mask,outer_loop,1));
r2 := BinaryConvert(substr(data,outer_loop,1));
divisor := 128;
r3 := 0;
for inner_loop in 1..8 loop
if to_number(substr(r1,inner_loop,1))+to_number(substr(r2,inner_loop,1))=1 then
r3 := r3 + divisor;
end if;
divisor := divisor / 2;
end loop;
result := result || chr(r3);
end loop;
return(result);
end;
End data_cryption;
/

/* ____________ Prueba ________________ */

set serveroutput on
declare
result varchar2(30);
mask varchar2(30);
begin
mask := \'abc\'; /* Must be greater or equal to the value that
will be \"Encrypted\" */

result := data_cryption.cryption(\'ABD\',mask); /* \"Encrypt\" */
dbms_output.put_line(result);

result := data_cryption.cryption(result,mask); /* \"Decrypt\" */
dbms_output.put_line(result);

end;
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar