Oracle的AES加密与解密用法 2013年12月11日 11:50:35 iteye_751 阅读数:428 --加密字符串 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;
--key,至少要16位 i_key:= ‘abcdef0123456789‘;
--要加密信息 i_data:= input; v_in := rpad(i_data,(trunc(length(i_data)/8)+1)*8,chr(0)); --字符转成RAW raw_input := UTL_RAW.CAST_TO_RAW(v_in); key_input := UTL_RAW.CAST_TO_RAW(i_key); dbms_obfuscation_toolkit.DES3Encrypt(input => raw_input,key => key_input,encrypted_data => decrypted_raw);
--加密信息转成字符 return to_char(rawtohex(decrypted_raw));
end des3_enc;
?
--解密字符串 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;
--key,至少要16位 i_key:= ‘abcdef0123456789‘;
--要解密的信息 i_data := input;
dbms_obfuscation_toolkit.DES3DECRYPT(input_string => UTL_RAW.CAST_TO_varchar2(i_data),key_string => i_key,decrypted_string=> v_in); v_in := rtrim(v_in,chr(0));
--返回解密信息 return v_in;
end des3_dec;
?
--触发器,用于在增加、修改时自动加密字段,查询时需要手动调用解密函数进行解密。 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;
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|