提供一种简单的数据加密与解密方法, 以下为实现函数, 其中一个为数据加密, 另一个对加密的数据解密.
--加密
create or replace function encrypt(p_in in varchar2)
return varchar2
as
v_string_in varchar2(78);
v_string_out varchar2(39);
v_offset number(2);
v_outpass varchar2(30);
begin
v_offset:=to_number(to_char(sysdate,'ss')) mod 39;
v_string_in:='YN8K1JOZVYRB3MDETS5GPL27AXWIHQ94C6F0#$_';
v_string_out:='_$#ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
v_outpass:=substr(v_string_in,v_offset,1);
v_string_in:=v_string_in||v_string_in;
v_string_in:=substr(v_string_in,v_offset,39);
v_outpass:=v_outpass||translate(upper(p_in),v_string_in,v_string_out);
return v_outpass;
end;
/
--解密
create or replace function decrypt(p_in in varchar2)
return varchar2
as
v_string_in varchar2(78);
v_string_out varchar2(39);
v_offset number(2);
v_outpass varchar2(30);
begin
v_string_in:='YN8K1JOZVYRB3MDETS5GPL27AXWIHQ94C6F0#$_';
v_string_out:='_$#ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
--v_offset:=to_number(to_char(sysdate,'ss')) mod 39;
v_offset:=instr(v_string_in,substr(p_in,1,1));
--v_outpass:=substr(v_string_in,v_offset,1);
v_string_in:=v_string_in||v_string_in;
v_string_in:=substr(v_string_in,v_offset,39);
v_outpass:=v_outpass||translate(upper(p_in),v_string_in,v_string_out);
v_outpass:=translate(upper(substr(p_in,2)),v_string_out,v_string_in);
return v_outpass;
end;
# Dinya