测试环境: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