码迷,mamicode.com
首页 > 数据库 > 详细

oracle 使用 base64 des 加密解密

时间:2016-08-03 10:21:56      阅读:1717      评论:0      收藏:0      [点我收藏+]

标签:

平时使用到的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;

oracle 使用 base64 des 加密解密

标签:

原文地址:http://www.cnblogs.com/whlf/p/5731689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!