Declare
  v_seed Raw(128);
  v_key_1 Raw(64);
  v_key_2 Raw(64);
 
  v_Text_for_encrypted Raw(64);
  v_mw  Raw(64);
  v_cleartext Raw(64);
Begin
   --128位种子,产生密匙
   v_seed:=utl_raw.cast_to_raw('goognightgooddayadkajdfkladjfa;kf;akjdfakd;fadfadfaoeifakdjfakdjfafdafadfaf34343434343434343434343434343434343434343434343434343');  
   dbms_obfuscation_toolkit.DESGetKey(seed => v_seed,key => v_key_1);
   dbms_output.put_line(utl_raw.cast_to_varchar2(v_key_1));
  
   --用密匙加密明文
   v_text_for_encrypted:=utl_raw.cast_to_raw('China is a great country');
   dbms_obfuscation_toolkit.DESEncrypt(input =>v_text_for_encrypted ,key => v_key_1,encrypted_data =>v_mw );
   dbms_output.put_line(v_mw);
  
   --用密匙 解密 密文
   dbms_obfuscation_toolkit.DESDecrypt(input =>v_mw ,key =>v_key_1 ,decrypted_data =>v_cleartext );
   dbms_output.put_line(utl_raw.cast_to_varchar2(v_cleartext));
  
   ---des-3算法测试
   dbms_obfuscation_toolkit.DES3GetKey(which => 0,seed => v_seed,key => v_key_1);
   dbms_output.put_line(utl_raw.cast_to_varchar2(v_key_1));
  
   dbms_obfuscation_toolkit.DES3Encrypt(input =>v_text_for_encrypted ,key =>v_key_1 ,encrypted_data =>v_mw ,which => 0,iv =>Null);
  
   dbms_obfuscation_toolkit.DES3Decrypt(input => v_mw,key =>v_key_1,decrypted_data =>v_cleartext,which => 0,iv => Null);
   dbms_output.put_line(utl_raw.cast_to_varchar2(v_cleartext));
  
   
End;  


输出如下:
   7埓K束觿
8332BE58695F720C4563BAD4CDAACAF687F9A3461B779D7C
China is a great country
x埮>豌h@?镵A.7
China is a great country


 关于des3算法,请参考oracle <<PL/SQL Packages and Types Reference>>



2009/10/23 补充如下:
1)如果在其它的应用环境中调用以上过程方法,那么请务必注意变量处理的问题,否则可能导致无法正确地解密
2)对于不同的oracle实例,其密匙都需要重新生成的。

有两个函数:

 create or replace function func_des3_JiaMi(ClearText  in varchar2) return Varchar2 Is
/*-----------------------------------------------------------------------
  名称:    
  功能简述:对传入的密码进行加密
  参数:
       Ename   Cname   availableValue     
       pwdd    密码
  返回:
       明文密码
  算法:
       DES-3
  注意事项:
       1)对于明文,必须是8的倍数,由于这里是加密密码的,所以,暂时算有24位。
       2)对于key而言,不同的时间产生的不一样的,不同机器产生的也不能混用,所以可以使用其它方法生成一个
         key之后,再代入到以下代码中。
  数据源:
       
  修改记录;
  lzf     2009-10-20     新增
*/  
  --v_seed Raw(128);
  v_key_1 Raw(64);
  vTmp   Varchar2(24):=rpad(ClearText,24,' ');
  --vTmp   Varchar2(24):=ClearText;
  v_cleartext Raw(64);
  v_mw  Raw(64);
Begin
   --128位种子
 --v_seed:=utl_raw.cast_to_raw('riceWaterMeatMilkOrangeAppleBananaVegetableChickenDeskPaperInkCupTeaOilGasKnifeGunSexAgeNiceGirlBeautifulCarBusFatherGoodChinese');      
   --des-3 ,产生密匙
   --dbms_obfuscation_toolkit.DES3GetKey(which => 0,seed => v_seed,key => v_key_1);      
   --des-3-加密      
   v_key_1:=utl_raw.cast_to_raw('$?ⅣU7覡q詹m?.');
   v_cleartext:=utl_raw.cast_to_raw(vTmp);
   dbms_obfuscation_toolkit.DES3Encrypt(input =>v_cleartext ,key =>v_key_1 ,encrypted_data =>v_mw ,which => 0,iv =>Null);
   Return  utl_raw.cast_to_varchar2(v_mw);
   --Return v_mw;
exception
  when others Then
     dbms_output.put_line(Sqlerrm);
     return null;  
end func_des3_JiaMi;
 create or replace function func_des3_JieMi(pwd  in Varchar2) return varchar2 Is
/*-----------------------------------------------------------------------
  名称:    function func_des3_JieMi
  功能简述:对传入的密码进行解密
  参数:
       Ename   Cname   availableValue     
       pwdd    密码
  返回:
       明文密码
  算法:
       DES-3
  注意事项:
     pwd必须是varchar2格式,不是raw格式.  
  数据源:
       
  修改记录;
  lzf     2009-10-20     新增
*/  
  --v_seed Raw(128);
  v_key_1 Raw(64);
  v_cleartext Raw(64);
  v_mw   Raw(64):=utl_raw.cast_to_raw(pwd);
  --v_mw   Raw(64):=pwd;
Begin

   --128位种子
   --v_seed:=utl_raw.cast_to_raw('riceWaterMeatMilkOrangeAppleBananaVegetableChickenDeskPaperInkCupTeaOilGasKnifeGunSexAgeNiceGirlBeautifulCarBusFatherGoodChinese');    
   ---des-3 ,产生密匙
   --dbms_obfuscation_toolkit.DES3GetKey(which => 0,seed => v_seed,key => v_key_1);      
   --des-3-解密   
   v_key_1:=utl_raw.cast_to_raw('$?ⅣU7覡q詹m?.');
   dbms_obfuscation_toolkit.DES3Decrypt(input => v_mw,key =>v_key_1,decrypted_data =>v_cleartext,which => 0,iv => Null);  
   Return  utl_raw.cast_to_varchar2(v_cleartext);
exception
  when others then
     return null;  
end function func_des3_JieMi;
/

oracle加密-des 简单举例.的更多相关文章

  1. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    引用自 :http://www.2cto.com/database/201307/224836.html   Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...

  2. Asp.Net 常用工具类之加密——对称加密DES算法(2)

    又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...

  3. [转]bootstrapTable refresh 方法使用简单举例

    原文地址:https://blog.csdn.net/lanyang123456/article/details/55805478 本文就bootstrapTable refresh 方法如何传递参数 ...

  4. bootstrapTable refresh 方法使用简单举例

    本文就bootstrapTable refresh 方法如何传递参数做简单举例说明. 下面代码中,一个table,一个button,单击button会触发刷新表格操作. <!DOCTYPE ht ...

  5. 对称加密DES加密

    DES加密: des是对称加密,加密和解密需要相同的秘钥,它的密码最长56位,必须是8的倍数,秘钥越长,越安全. package com.trm.util.encrypt; import java.s ...

  6. Java中使用MD5加密的简单实现

    import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorith ...

  7. oracle加密encrypt,解密decrypt

    目录 oracle加密encrypt,解密decrypt 加密 解密 oracle加密encrypt,解密decrypt 有的oracle版本没有加解密函数,以下操作可以手动添加 oracle数据使用 ...

  8. 备忘DES带向量的加密和解密与DES简单加密与解密

    package com.ego.util; import java.security.Key; import java.security.SecureRandom; import java.secur ...

  9. 备忘DES简单加密与解密

    package com.ego.util; import java.io.IOException; import java.security.SecureRandom; import javax.cr ...

随机推荐

  1. 性能优化 BlockCanary 卡顿监测 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. CSS的50个代码片段

    1.css全局 html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a ...

  3. listview加载数据

    首先我们需要理清思路:使用ListView显示数据是很方便的,ListVIew的数据之间通过适配器adapter去作为桥梁连接起来.当我们需要使用listview显示大量数据的时候,我们需要使用到分页 ...

  4. Linq-插入insert

    1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提交到数据库. NorthwindDataContext db = n ...

  5. JS 判断浏览器是否安装Flash 兼容IE、firefox

    /** * @Author: HTL * @Email: Huangyuan413026@163.com * @DateTime: 2016-06-02 11:37:05 * @Description ...

  6. .NET Framework 工具

    您可以使用 .NET Framework 工具轻松创建.部署和管理面向 .NET Framework 的应用程序和组件. 此节中介绍的大部分 .NET Framework 工具将自动随 Visual ...

  7. Apache和Nginx对比

    面试过程中被问到Apache和Nginx服务器的对比,因为之前没有关注过这个问题,所以也没能回答上来. 今天在网上搜索资料,发现中文资料极少,还是英文资料多一下. 原文链接:https://www.w ...

  8. 【树莓派】树莓派Android相关资料

    树莓派完美运行最新 Android 7.0 牛轧糖: https://linuxstory.org/android-7-0-nougat-on-raspberry-pi/ Raspberry Pi 3 ...

  9. linux测试工程介绍(Linux Test Project)

    http://ltp.sourceforge.net/ Linux Test Project, 后台很硬,由SGI™ 发起, IBM维护,所以质量有保障. 里面介绍了很多工具,对于一般的基准测试应该是 ...

  10. vcenter建立cluster

    参见: VMware vSphere 5.1 学习系列之六:vCenter Server 主机管理(2) http://bbs.watchstor.com/thread-166222-1-2.html ...