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

Oracle
Oracle数据库的使用技巧五则
Oracle数据库的启动和关闭方式
解决Oracle并行服务器的相关问题
SuSE Linux10上安装Oracle数据库方法
正确进行Oracle数据库性能完全保护
最影响Oracle系统性能的初始化参数
掌握MIS系统实例中Oracle的安全策略
深入了解Oracle数据库后台进程的功能
如何用Oracle创建实例的参数需求
Oracle非法数据库对象引起的错误
掌握Oracle数据库中sequence的用法
黑客狙击Oracle系统的八大常用套路
数据从MySQL迁移到Oracle的注意事项
使用utl_smtp从Oracle中发送电子邮件
Oracle操作中常见的错误和解决方法
Oracle数据库中sequence的用法
使Oracle数据库保持优良性能
Oracle数据库中的临时表用法
Oracle10gR2中调整user commit的方法
SQL Server 2005对DBA的要求是否会更高

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 114 ::
收藏到网摘: 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