当前位置: 首页 > 图文教程 > 数据库 > Oracle > oracle用存储过程加密一段字符串(3des算法)

Oracle
Oracle数据库集复制方法浅议
Oracle 数据表分区的策略
Oracle收购TimesTen 提高数据库软件性能
Oracle中大批量删除数据的方法
一个oracle指令的好网站
ORACLE数据库空间整理心得
如何Shrink Undo表空间,释放过度占用的空间
Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理
收集的ORACLE函数大全
PL/SQL Number数字类型函数
PL/SQL 日期时间类型函数及运算
PL/SQL 类型格式转换
Oracle关于时间/日期的操作
PL/SQL数据类型及操作符
PL/SQL number型数据
ORACLE 常用的SQL语法和数据对象
如何保持Oracle数据库的优良性能
Oracle轻松取得建表和索引的DDL语句
重新编译PLSQL中的无效对象或者指定的对象 的方法
在OracleE数据库的字段上建立索引的方法

Oracle 中的 oracle用存储过程加密一段字符串(3des算法)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 91 ::
收藏到网摘: n/a

create or replace package PG_ENCRYPT_DECRYPT
is
iKey varchar2(8):='oracle9i';
function GEN_RAW_KEY  ( iKey in varchar2) return raw;
function DECRYPT_3KEY_MODE(iValue in raw,iMode in pls_integer)return varchar2;
function ENCRYPT_3KEY_MODE(iValue in varchar2,iMode in pls_integer)return raw;
function FormatStr(iValue in varchar2)return varchar2;
function FormatStr2(iValue in varchar2)return varchar2;
end;
/////////
create or replace package body PG_ENCRYPT_DECRYPT
is
  function GEN_RAW_KEY  ( iKey in varchar2)
  return raw
  as
    rawkey raw(240) := '';
  begin
    for i in 1..length(iKey) loop   
       rawkey := rawkey||hextoraw(to_char(ascii(substr(iKey, i, 1))));
    end loop;
    return rawkey;
  end GEN_RAW_KEY;
  /* Creating function DECRYPT_3KEY_MODE*/
  FUNCTION DECRYPT_3KEY_MODE  ( iValue in raw, iMode in pls_integer)return varchar2
  as
    vDecrypted varchar2(4000);
    rawkey raw(240) := '';
  begin
       rawkey := GEN_RAW_KEY(iKey);-- decrypt input string
       vDecrypted := dbms_obfuscation_toolkit.des3decrypt (UTL_RAW.CAST_TO_VARCHAR2(iValue), key_string => rawkey, which => iMode);
       return FormatStr2(vDecrypted);
  end DECRYPT_3KEY_MODE;
  /*Creating function ENCRYPT_3KEY_MODE*/
  FUNCTION ENCRYPT_3KEY_MODE  ( iValue in varchar2,  iMode in pls_integer)return raw
  as
    vEncrypted varchar2(4000);
    vEncryptedRaw Raw(2048);
    rawkey raw(240) := '';
  begin
    rawkey := GEN_RAW_KEY(iKey);-- encrypt input string
    vEncrypted := dbms_obfuscation_toolkit.des3encrypt (FormatStr(iValue), key_string => rawkey, which => iMode);
    -- convert to raw as out
    vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted);
    return vEncryptedRaw;
  end ENCRYPT_3KEY_MODE;

function FormatStr(iValue in varchar2)return varchar2
  as
  begin
      declare
        i number;
        j number;
        m_value varchar2(4000);
      begin
           m_value:=iValue;
           i:=(length(m_value) mod 8);
           if i<>0 then
             j:=1;
             for j in 1..(8-i) loop
                 m_value:=m_value||'#';
             end loop;            
           end if;
           return m_value;  
      end; 
  end FormatStr;
 
  function FormatStr2(iValue in varchar2)return varchar2
  as
  begin
      declare
        i number;
        j number;
        m_value varchar2(4000);
      begin
           m_value:=iValue;
  &n