--加密字符串 create or replace function des3_enc ( input varchar2 ) return varchar2 is i_data varchar2(128); v_in varchar2(255); i_key varchar2(128); raw_input RAW(128) ; key_input RAW(128) ; decrypted_raw RAW(2048); begin --判断是否为空 if input is null then return null; else if input='' then return ''; end if; end if;
--解密字符串 create or replace function des3_dec ( input varchar2 ) return varchar2 is i_data varchar2(2048); i_key varchar2(2048); v_in varchar2(2048); begin --判断是否为空 if input is null then return null; else if input='' then return ''; end if; end if;
--触发器,用于在增加、修改时自动加密字段,查询时需要手动调用解密函数进行解密。 create or replace trigger enc_trigger before insert or update on scott.dept for each row begin select des3_enc(:new.dname) into :new.dname from dual; end enc_trigger;
--使用示例: insert into dept values (50,'test','test'); commit; select des3_dec(dname) from dept where deptno=50;