oracle自带加加解密工具的使用一例

--使用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;
 
---------------------------------------------------------------------------
--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;
---------------------------------------------------------------------------
--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>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/694276/viewspace-717537/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/694276/viewspace-717537/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值