oracle使用3DES加密
CREATE OR REPLACE PACKAGE dbc_cryptor IS
SYSKEY VARCHAR2(16) := '0000000012345678';
SYSIV VARCHAR2(16) :=chr(0)||chr(0)||chr(0)||chr(0)||chr(0)||chr(0)||chr(0)||chr(0);
FUNCTION encrypt_3des(v_str IN VARCHAR2,
v_key IN VARCHAR2 DEFAULT SYSKEY) RETURN RAW;
FUNCTION decrypt_3des(v_raw IN RAW, v_key IN VARCHAR2 DEFAULT SYSKEY)
RETURN VARCHAR2;
END;
/ CREATE OR REPLACE PACKAGE BODY dbc_cryptor IS FUNCTION encrypt_3des(v_str IN VARCHAR2, v_key IN VARCHAR2 DEFAULT SYSKEY) RETURN RAW AS
v_str_raw RAW(2048);
BEGIN if v_str is null then
RETURN NULL;
end if; if (MOD(LENGTHB(v_str), 8) > 0) then
v_str_raw := UTL_RAW.CAST_TO_RAW(RPAD(v_str, (floor(LENGTHB(v_str)/8)+1)*8, chr(0)));
else
v_str_raw := UTL_RAW.CAST_TO_RAW(v_str);
end if; if v_key = SYSKEY then
return DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(input => v_str_raw, key => UTL_RAW.CAST_TO_RAW(v_key), which => 0, iv => NULL);
else
return DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(input => v_str_raw, key => UTL_RAW.CAST_TO_RAW(v_key), which => 0, iv => UTL_RAW.CAST_TO_RAW(SYSIV));
end if; END; FUNCTION decrypt_3des(v_raw IN raw, v_key IN VARCHAR2 DEFAULT SYSKEY) RETURN VARCHAR2 AS BEGIN if v_raw is null or MOD(LENGTH(v_raw), 16) <> 0 then
RETURN NULL;
end if; if v_key = SYSKEY then
return UTL_RAW.CAST_TO_VARCHAR2(DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(input => v_raw, key => UTL_RAW.CAST_TO_RAW(v_key), which => 0, iv => NULL));
else
return UTL_RAW.CAST_TO_VARCHAR2(DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(input => v_raw, key => UTL_RAW.CAST_TO_RAW(v_key), which => 0, iv => UTL_RAW.CAST_TO_RAW(SYSIV))); end if; END;
END;
/
oracle使用3DES加密的更多相关文章
- Des与3Des加密解密
/// <summary> /// Des和3Des算法 /// </summary> public class Des { /// <summary> /// D ...
- C# 3DES加密
最近一个项目中,因为服务端是用的java开发的,客户端是用的C#,由于通信部分采用到了3DES加密,所以做个记录,以备以后需要的时候直接用. 这是对方(java)的加密算法,和网上流传的代码也差不多( ...
- iOS 3DES加密解密(一行代码搞定)
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...
- 简进祥==iOS 3DES加密解密
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...
- JAVA和C# 3DES加密解密
最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的B ...
- C# Java 3DES加密解密 扩展及修正\0 问题
注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ------------------------------------- ...
- JAVA安卓和C# 3DES加密解密的兼容性问题(2013年8月修改版)
近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的By ...
- 使用openssl库实现des,3des加密
原文地址: 使用openssl库实现des,3des加密 主要是调整了一下格式,以及一些变量的类型,以解决在VC2008下无法编译通过的问题. #include <stdio.h> #in ...
- Java中3DES加密解密与其他语言(如C/C++)通信
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
随机推荐
- metasploit framework(三):exploit模块
exploit模块 分为主动,被动exploit 主动exploit:攻击者(通常是客户端)主动发起连接请求,然后发送exploit给被攻击者(通常是服务器端) 被动exploit:被攻击者(通常是客 ...
- 【scrapy】其他问题
今天看<python爬虫开发与项目实践>的17章写代码的时候发现,一个方法的结尾带了红色波浪线: def _process_booklist_item(self,item): ''' 处理 ...
- python--第三天总结
[collection系列]1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能 c = Counter('abcdeabc ...
- Django 自定义 过滤器和模板标签
代码布局(自定义的代码,放在哪里) 二种方式:1. 某个app特有的 -app 目录下,templatetags 文件夹 ** 必需是这个名称的包(目录中有__init__.py文件) -再到 ...
- rancher 2 webhook 格式
{ "version":"4", "groupKey":<string>, "status":"& ...
- linux命令之----sort命令用于将文本文件内容加以排序
1.sort命令作用 sort命令用于将文本文件内容加以排序,将输入行按照键值字段与数据类型选项以及locale排序. 一个可预期的记录次序,会让用户的查看使用更方便:书的索引.字典.目录以及电话簿等 ...
- 思维+并查集 hdu5652
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 输入T,接下来T个样例,每个样例输入n,m代表图的大小,接下来n行,每行m个数,代表图, ...
- FZU2150 :Fire Game (双起点BFS)
传送门:点我 题意:“#”是草,"."是墙,询问能不能点燃俩地方,即点燃俩“#”,把所有的草烧完,如果可以,那么输出最小需要的时间,如果不行输出-1 思路:暴力BFS,看到n和m都 ...
- Delphi: 圆形进度(环形进度)
起源: 重回DC5项目,资源下载美工提供圆形进度条,复习Delphi,为实现其颇觉有趣,遂研究其. 最终效果图如下: 实现: 制作TCircleProgress控件,实现方法参照系统之TGauge控件 ...
- sql语句Order by 报错列名不明确
select top 10 column1,column2,column3 from table1 where table1.id not in(select top 0 table1.id from ...