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 (不写邀请码,没有现金送)国内私 ...
随机推荐
- PO接口表
---物料主数据接口 SELECT count(*)PO_MARA FROM STG.PO_MARA; SELECT count(*)PO_MARC FROM STG.PO_MARC; SELECT ...
- streaming窗口操作
之前一直对窗口操作不太理解.认为spark streaming本身已经是分片计算,还需要窗口操作干啥. 窗口操作最为简单易懂的场景就是,在M时间间隔计算一次N时间内的热搜.当M=N的时候,就像上述所说 ...
- Android设置ScrollView回到顶部的三种方式 (转)
一.ScrollView.scrollTo(0,0) 直接置顶,瞬间回到顶部,没有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置; 二.ScrollView.fullSc ...
- H3C S5800 MPLS----VPLS 三层路由透传二层网络
一.MPLS 介绍 多协议标签交换(Multi-Protocol Label Switching,MPLS)是新一代的IP高速骨干网络交换标准,由因特网工程任务组(Internet Engineeri ...
- TOJ3216 我要4444
传送门 http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3216 时间限制(普通/Java) ...
- Codeforces Beta Round #54 (Div. 2)
Codeforces Beta Round #54 (Div. 2) http://codeforces.com/contest/58 A 找子序列 #include<bits/stdc++.h ...
- F - Restoring the Expression CodeForces - 898F
字符串hash: base设置为10 枚举'='可能出现的位置,从1/2处开始到大概1/3处结束,当然大概的1/3不用计算,直接到最后就行,因为本题必然有解,输出直接结束即可. 根据'='号位置,' ...
- js正则表达式中的正向肯定预查和正向否定预查
对于没有使用过这几个表达式的人,应该对这个概念都有点不太理解,下面就以实际例子说明这几个表达式的用户. 一.?:pattern——匹配检验:会作为匹配校验,是一个非获取匹配,并出现在匹配字符结果里面, ...
- java 空格替换%20
public String replaceSpace(StringBuffer str2) { StringBuffer str4 = new StringBuffer(); int length=s ...
- 使用JFinal实现使用MVC获取表单中的数据并将提示信息返回给另一jsp页面。
1.包结构 2.我们需要对web.xml进行配置: <?xml version="1.0" encoding="UTF-8"?> <web-a ...