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

加Q757856333亚

加Q757856333亚

2016-01-29 14:43

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

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;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)[next]

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

展开更多 50%)
分享

猜你喜欢

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

电脑网络
oracle用存储过程加密一段字符串(3des算法)

ORACLE 截断字符串

编程语言 网络编程
ORACLE 截断字符串

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

字符串近似匹配算法

编程语言 网络编程
字符串近似匹配算法

oracle 字符串转成行

编程语言 网络编程
oracle 字符串转成行

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

最大对称字符串的算法

编程语言 网络编程
最大对称字符串的算法

Android 加密解密字符串详解

编程语言 网络编程
Android 加密解密字符串详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

利用SQL*Plus复制遗留的Oracle数据表

利用SQL*Plus复制遗留的Oracle数据表

用PHP实现WEB动态网页静态

用PHP实现WEB动态网页静态
下拉加载更多内容 ↓