oracle加密-des 简单举例.
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 简单举例.的更多相关文章
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
引用自 :http://www.2cto.com/database/201307/224836.html Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...
- Asp.Net 常用工具类之加密——对称加密DES算法(2)
又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...
- [转]bootstrapTable refresh 方法使用简单举例
原文地址:https://blog.csdn.net/lanyang123456/article/details/55805478 本文就bootstrapTable refresh 方法如何传递参数 ...
- bootstrapTable refresh 方法使用简单举例
本文就bootstrapTable refresh 方法如何传递参数做简单举例说明. 下面代码中,一个table,一个button,单击button会触发刷新表格操作. <!DOCTYPE ht ...
- 对称加密DES加密
DES加密: des是对称加密,加密和解密需要相同的秘钥,它的密码最长56位,必须是8的倍数,秘钥越长,越安全. package com.trm.util.encrypt; import java.s ...
- Java中使用MD5加密的简单实现
import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorith ...
- oracle加密encrypt,解密decrypt
目录 oracle加密encrypt,解密decrypt 加密 解密 oracle加密encrypt,解密decrypt 有的oracle版本没有加解密函数,以下操作可以手动添加 oracle数据使用 ...
- 备忘DES带向量的加密和解密与DES简单加密与解密
package com.ego.util; import java.security.Key; import java.security.SecureRandom; import java.secur ...
- 备忘DES简单加密与解密
package com.ego.util; import java.io.IOException; import java.security.SecureRandom; import javax.cr ...
随机推荐
- [leetcode]Scramble String @ Python
原题地址:https://oj.leetcode.com/problems/scramble-string/ 题意: Given a string s1, we may represent it as ...
- 《JavaScript语言精粹》笔记
0.JavaScript的简单数据类型包括数字.字符创.布尔值(true/false).null和undefined值,其它值都是对象. 1.JavaScript只有一个数字类型,它在内部被表示为64 ...
- 用JQuery 判断某个属性是否存在hasAttr的解决方法
在jquery编码中,我们会判断元素是否存在某个属性.比如是否包含 class="new" 的样式呢.JQuery判断就非常简单了,因为有 hasClass这个方法 $(" ...
- Pandas Series笔记
1.指向单元素的,类型为元素的类型 2.指向多个元素的,类型为Series 3.如果用索引切片,索引是非整型的,实际按照索引顺序取值,且包含末端 4.如果指定的索引不存在,则会报错 5.可以根据元素的 ...
- JavaWeb之tomcat安装、配置与使用(一)
一.Tomcat下载与安装: 1.直接到官网下载Tomcat安装程序包:http://tomcat.apache.org/ 2.下载下来后是个压缩包,如:apache-tomcat-7.0.40.zi ...
- How to check WWN and Multipathing on Windows Server
There are many ways to find the World Wide Name (WWN) of fibre channel HBA connected to windows serv ...
- C#或Python中正则表达式元字符含意
一.列表 元字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 ' ...
- 创新大师Steve Blank: 你真的知道什么是真正的精益创业吗?
编者注:本文来自被誉为当代创新大师的Steve Blank的博客. 中文版由天地会珠海分舵编译. 全文从当今非常多人对精益创业的误解作为一个切入点,深入的分析了为什么人们这么easy就对精益创业产生误 ...
- 栈的实现与操作(C语言实现)
栈的定义 1, 栈是一种特殊的线性表 2,栈仅能在线性表的一端进行操作 3,栈顶(Top): 同意操作的一端 同意操作的一端 4,栈底(Bottom): ,不同意操作的一端 不同意操作 ...
- python的traceback模块
import traceback try: 1/0 except Exception,e: traceback.print_exc() 输出结果是 Traceback (most recent cal ...