--使用dbms_crypto.Encrypt进行加密
--使用dbms_crypto.Decrypt进行加密
--废话不多说,见代码
---------------------------------------------------------------------------
--1、加密方法
---------------------------------------------------------------------------
create or replace function F_GET_Encrypt(I_input_str in varchar2)
return String is
--加密函数
--key 可以自定义修改但,注意长度
V_STR_KEY varchar2(32) := '====zhaoxta@dcits.com====';
V_raw_key raw(128) := UTL_I18N.STRING_TO_RAW(V_STR_KEY);
V_raw_Encrypt raw(128);
--加密算法 可以修改为DBMS_CRYPTO.DES_CBC_PKCS5\DBMS_CRYPTO.DES3_CBC_PKCS5\DBMS_CRYPTO.AES_CBC_PKCS5等
--甚至可以自定义如DBMS_CRYPTO.ENCRYPT_DES+ DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;
V_TYPE PLS_INTEGER := DBMS_CRYPTO.DES3_CBC_PKCS5;
begin
V_raw_Encrypt := dbms_crypto.Encrypt(src => utl_i18n.string_to_raw(I_input_str),
typ => V_TYPE,
key => V_raw_key);
return V_raw_Encrypt;
end;
return String is
--加密函数
--key 可以自定义修改但,注意长度
V_STR_KEY varchar2(32) := '====zhaoxta@dcits.com====';
V_raw_key raw(128) := UTL_I18N.STRING_TO_RAW(V_STR_KEY);
V_raw_Encrypt raw(128);
--加密算法 可以修改为DBMS_CRYPTO.DES_CBC_PKCS5\DBMS_CRYPTO.DES3_CBC_PKCS5\DBMS_CRYPTO.AES_CBC_PKCS5等
--甚至可以自定义如DBMS_CRYPTO.ENCRYPT_DES+ DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;
V_TYPE PLS_INTEGER := DBMS_CRYPTO.DES3_CBC_PKCS5;
begin
V_raw_Encrypt := dbms_crypto.Encrypt(src => utl_i18n.string_to_raw(I_input_str),
typ => V_TYPE,
key => V_raw_key);
return V_raw_Encrypt;
end;
---------------------------------------------------------------------------
--2、解密方法
---------------------------------------------------------------------------
create or replace function F_GET_DEEncrypt(I_input_str in raw)
return String is
--解密函数
--key 可以自定义修改但,注意长度
V_STR_KEY varchar2(32) := '====zhaoxta@dcits.com====';
V_raw_key raw(128) := utl_raw.cast_to_raw(V_STR_KEY);
V_raw_DdEncrypt raw(128);
--解密算法 可以修改为DBMS_CRYPTO.DES_CBC_PKCS5\DBMS_CRYPTO.DES3_CBC_PKCS5\DBMS_CRYPTO.AES_CBC_PKCS5等
--甚至可以自定义如DBMS_CRYPTO.ENCRYPT_DES+ DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;
V_TYPE PLS_INTEGER := DBMS_CRYPTO.DES3_CBC_PKCS5;
begin
V_raw_DdEncrypt := dbms_crypto.Decrypt(src => I_input_str,
typ => V_TYPE,
key => V_raw_key);
return utl_i18n.raw_to_char(V_raw_DdEncrypt);
end;
return String is
--解密函数
--key 可以自定义修改但,注意长度
V_STR_KEY varchar2(32) := '====zhaoxta@dcits.com====';
V_raw_key raw(128) := utl_raw.cast_to_raw(V_STR_KEY);
V_raw_DdEncrypt raw(128);
--解密算法 可以修改为DBMS_CRYPTO.DES_CBC_PKCS5\DBMS_CRYPTO.DES3_CBC_PKCS5\DBMS_CRYPTO.AES_CBC_PKCS5等
--甚至可以自定义如DBMS_CRYPTO.ENCRYPT_DES+ DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;
V_TYPE PLS_INTEGER := DBMS_CRYPTO.DES3_CBC_PKCS5;
begin
V_raw_DdEncrypt := dbms_crypto.Decrypt(src => I_input_str,
typ => V_TYPE,
key => V_raw_key);
return utl_i18n.raw_to_char(V_raw_DdEncrypt);
end;
---------------------------------------------------------------------------
--3、使用举例
---------------------------------------------------------------------------
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as zxt
SQL> select f_get_encrypt('abcd') from dual;
F_GET_ENCRYPT('ABCD')
--------------------------------------------------------------------------------
B824B98ADF239357
SQL> select f_get_deencrypt('B824B98ADF239357') from dual;
F_GET_DEENCRYPT('B824B98ADF239
--------------------------------------------------------------------------------
abcd
SQL>
Connected as zxt
SQL> select f_get_encrypt('abcd') from dual;
F_GET_ENCRYPT('ABCD')
--------------------------------------------------------------------------------
B824B98ADF239357
SQL> select f_get_deencrypt('B824B98ADF239357') from dual;
F_GET_DEENCRYPT('B824B98ADF239
--------------------------------------------------------------------------------
abcd
SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/694276/viewspace-717537/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/694276/viewspace-717537/