create encode function and decode function for using

create or replace function myencrypt_str(
p_str varchar2,
p_key varchar2 default 'oracle')
return varchar2
is
v_str varchar2(16);
v_str2 varchar2(32);
v_txt_string varchar2(16);
v_key varchar2(16) := p_key;
v_key_str varchar2(16);
v_key_raw raw(128);
v_str_raw raw(128);
v_encrypted_str varchar2(32);
v_return varchar2(32);
v_tmp number;
begin
select vsize(trim(p_str))
into v_tmp
from dual;
if v_tmp < 32 then
    select trim(p_str)
    into v_str from dual;
    select rpad(v_key, 16, chr(255)),
    rpad(v_str, 16, chr(255))
    into v_key_str, v_txt_string
    from dual;
    v_key_raw := utl_raw.cast_to_raw(v_key_str);
    v_str_raw := utl_raw.cast_to_raw(v_txt_string);
    sys.dbms_obfuscation_toolkit.desencrypt(
    input=>v_str_raw,
     key=>v_key_raw,
     encrypted_data=>v_encrypted_str);
    v_return := trim(v_encrypted_str);
else
    v_str2 := p_str;
    v_return := v_str2;
end if;
return v_return;
EXCEPTION
when others then
raise;
end myencrypt_str; 

------------------------------------------------------------------------
create or replace function mydecrypt_str(
p_str varchar2,
p_key varchar2 default 'oracle')
return varchar2
is
v_str varchar2(32) := p_str;
v_txt_string varchar2(16);
v_key varchar2(16) := p_key;
v_key_str varchar2(16);
v_key_raw raw(128);
v_tmp varchar2(32);
v_str_raw raw(128);
v_encrypted_str varchar2(32);
v_decrypted_str varchar2(32);
v_return varchar2(32);
v_tmp2 number;

begin
select vsize(trim(v_str))
into v_tmp2
from dual;
if not v_tmp2 < 32 then
    select rpad(v_key, 16, chr(255)),
    rpad(v_str, 16, chr(255))
    into v_key_str,
     v_txt_string
    from dual;

    v_key_raw := utl_raw.cast_to_raw(v_key_str);
    v_str_raw := utl_raw.cast_to_raw(v_txt_string);

    sys.dbms_obfuscation_toolkit.desdecrypt(
    input=>v_str,
     key=>v_key_raw,
     decrypted_data=>v_decrypted_str);

    v_tmp := utl_raw.cast_to_varchar2(v_decrypted_str);
    select replace(v_tmp, chr(255), null)
    into v_return
    from dual;
else
    v_return := '- No encryption detected -';
end if;

return v_return;

EXCEPTION
when others then
raise;

end mydecrypt_str;
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值