Oracle 字符串加密方法

测试环境:Oracle 10g
 
1、方法一 MD5加密
 1.create or replace function fn_md5(input_string VARCHAR2) return varchar2  
 2.IS 
 3.raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);  
 4.decrypted_raw RAW(2048);  
 5.error_in_input_buffer_length EXCEPTION;  
 6.BEGIN 
 7.sys.dbms_obfuscation_toolkit.MD5(input => raw_input,checksum => decrypted_raw);  
 8.return rawtohex(decrypted_raw);  
 9.END; 
 
2、方法二 3des算法
 1.create or replace package PG_ENCRYPT_DECRYPT  
 2.is 
 3.iKey varchar2(8):='Oracle9i';  
 4.function GEN_RAW_KEY ( iKey in varchar2) return raw;  
 5.function DECRYPT_3KEY_MODE(iValue in raw,iMode in pls_integer)return varchar2;  
 6.function ENCRYPT_3KEY_MODE(iValue in varchar2,iMode in pls_integer)return raw;  
 7.function FormatStr(iValue in varchar2)return varchar2;  
 8.function FormatStr2(iValue in varchar2)return varchar2;  
 9.end; 
 
 
 
 
 1.create or replace package body PG_ENCRYPT_DECRYPT  
 2.is 
 3.function GEN_RAW_KEY ( iKey in varchar2)  
 4.return raw  
 5.as 
 6.rawkey raw(240) := '';  
 7.begin 
 8.for i in 1..length(iKey) loop  
 9.rawkey := rawkey || hextoraw(to_char(ascii(substr(iKey, i, 1))));  
 10.end loop;  
 11.return rawkey;  
 12.end GEN_RAW_KEY;  
 13./* Creating function DECRYPT_3KEY_MODE*/  
 14.FUNCTION DECRYPT_3KEY_MODE ( iValue in raw, iMode in pls_integer)return varchar2  
 15.as 
 16.vDecrypted varchar2(4000);  
 17.rawkey raw(240) := '';  
 18.begin 
 19.rawkey := GEN_RAW_KEY(iKey);-- decrypt input string  
 20.vDecrypted := dbms_obfuscation_toolkit.des3decrypt (UTL_RAW.CAST_TO_VARCHAR2(iValue), key_string => rawkey, which => iMode);  
 21.return FormatStr2(vDecrypted);  
 22.end DECRYPT_3KEY_MODE;  
 23./*Creating function ENCRYPT_3KEY_MODE*/  
 24.FUNCTION ENCRYPT_3KEY_MODE ( iValue in varchar2, iMode in pls_integer)return raw  
 25.as 
 26.vEncrypted varchar2(4000);  
 27.vEncryptedRaw Raw(2048);  
 28.rawkey raw(240) := '';  
 29.begin 
 30.rawkey := GEN_RAW_KEY(iKey);-- encrypt input string  
 31.vEncrypted := dbms_obfuscation_toolkit.des3encrypt (FormatStr(iValue), key_string => rawkey, which => iMode);  
 32.-- convert to raw as out  
 33.vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted);  
 34.return vEncryptedRaw;  
 35.end ENCRYPT_3KEY_MODE;  
 36. 
 37.function FormatStr(iValue in varchar2)return varchar2  
 38.as 
 39.begin 
 40.declare 
 41.i number;  
 42.j number;  
 43.m_value varchar2(4000);  
 44.begin 
 45.m_value:=iValue;  
 46.i:=(length(m_value) mod 8);  
 47.if i<>0 then 
 48.j:=1;  
 49.for j in 1..(8-i) loop  
 50.m_value:=m_value || '#';  
 51.end loop;  
 52.end if;  
 53.return m_value;  
 54.end;  
 55.end FormatStr;  
 56. 
 57.function FormatStr2(iValue in varchar2)return varchar2  
 58.as 
 59.begin 
 60.declare 
 61.i number;  
 62.j number;  
 63.m_value varchar2(4000);  
 64.begin 
 65.m_value:=iValue;  
 66.i:=instr(iValue,'#',1,1);  
 67.if i>0 then 
 68.m_value:=substr(m_value,1,i-1);  
 69.end if;  
 70.return m_value;  
 71.end;  
 72.end FormatStr2;  
 73.end PG_ENCRYPT_DECRYPT; 

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-02/55032.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值