标签:
平时使用到的base 、des 加密方法
对于des 加解密 的秘钥 长度为8位,当输入的秘钥位数大于8位自动截取。
包头
create or replace package pkg_compare is
function f_en_base64(pi_str varchar2) return varchar2;
function f_de_base64(pi_str varchar2) return varchar2;
procedure p_decrypt_des
(
pi_str varchar2
,pi_key varchar2
,po_encode out varchar2
);
procedure p_encrypt_des
(
pi_str varchar2
,pi_key varchar2
,po_encode out varchar2
);
end;
包体:
create or replace package body pkg_compare is
/*base64 加密函数 输入需要加密的字符串,返回加密后的字符串。*/
function f_en_base64(pi_str varchar2) return varchar2 is
out_base64 varchar2(4000);
begin
--调用系统base64转换函数
select utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(pi_str)))
into out_base64
from dual;
return out_base64;
end;
/*base64 解密函数 输入需要解密密的字符串,返回解密密后的字符串。*/
function f_de_base64(pi_str varchar2) return varchar2 is
out_base64 varchar2(4000);
begin
--调用系统base64转换函数
select utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(pi_str)))
into out_base64
from dual;
return out_base64;
end;
/*解 des 存储过程*/
procedure p_decrypt_des
(
pi_str varchar2
,pi_key varchar2
,po_encode out varchar2
) is
nv_str varchar2(4000);
begin
--调用des 解密系统函数
dbms_obfuscation_toolkit.desdecrypt(input_string => utl_raw.cast_to_varchar2(pi_str)
,key_string => pi_key
,decrypted_string => nv_str);
po_encode := rtrim(nv_str, chr(0));
end;
/*des 加密*/
procedure p_encrypt_des
(
pi_str varchar2
,pi_key varchar2
,po_encode out varchar2
) is
nv_str varchar2(4000);
raw_input raw(128);
key_input raw(128);
decrypted_raw raw(2048);
begin
nv_str := rpad(pi_str, (trunc(length(pi_str) / 8) + 1) * 8, chr(0));
raw_input := utl_raw.cast_to_raw(nv_str);
key_input := utl_raw.cast_to_raw(pi_key);
dbms_obfuscation_toolkit.desencrypt(input => raw_input
,key => key_input
,encrypted_data => decrypted_raw);
po_encode := rawtohex(decrypted_raw);
return;
end;
end;
标签:
原文地址:http://www.cnblogs.com/whlf/p/5731689.html