oracle 加密成,Oracle wrap加密 和 unwrap解密过程!
在一些代码中,使用wrap加密,经过加密的存储过程等不能查看,oracle也没有公布unwrap方法,但这也难不倒一些喜欢专研的大神,Oracle加密的原理就是先对源码进行lz压缩lzstr,然后对压缩数据进行SHA-1运算得到40位的加密串shstr,然后将加密串与压缩串拼接得到shstr+lzstr,然后对拼接后的字符串进行Oracle双字符转换(转换表)。最后将转换后的字符串进行base64编码,最终得到wrap的加密串。首先先看一下简单的wrap加密。
通过wrap可以加密:1. 存储过程,2. 函数 3. 包和包体 4. type和type body
1. 比如需要加密proc1存储过程,首先编译一下这个存储过程,保证存储过程的正确性
PgSQL
oracle@linux-fz9d:~> cat sp_test_wrap.sql
create or replace procedure proc1(
p_para1 varchar2
)
as
begin
dbms_output.put_line('p_para3:'||p_para1);
end;
/
-----------编译存储过程
oracle@linux-fz9d:~> sqlplus scott/tiger
SQL*Plus: Release 12.1.0.1.0 Production on Thu Apr 24 12:15:11 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Last Successful login time: Thu Apr 24 2014 12:14:20 -04:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> @sp_test_wrap.sql
Procedure created.
------------执行存储过程
SQL> begin
2 proc1('A');
3 end;
4 /
p_para3:A
PL/SQL procedure successfully completed.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
oracle@linux-fz9d:~>catsp_test_wrap.sql
createorreplaceprocedureproc1(
p_para1varchar2
)
as
begin
dbms_output.put_line('p_para3:'||p_para1);
end;
/
-----------编译存储过程
oracle@linux-fz9d:~>sqlplusscott/tiger
SQL*Plus:Release12.1.0.1.0ProductiononThuApr2412:15:112014
Copyright(c)1982,2013,Oracle.Allrightsreserved.
LastSuccessfullogintime:ThuApr24201412:14:20-04:00
Connectedto:
OracleDatabase12cEnterpriseEditionRelease12.1.0.1.0-64bitProduction
WiththePartitioning,OLAP,AdvancedAnalyticsandRealApplicationTestingoptions
SQL>@sp_test_wrap.sql
Procedurecreated.
------------执行存储过程
SQL>begin
2proc1('A');
3end;
4/
p_para3:A
PL/SQLproceduresuccessfullycompleted.
2. 确保proc1存储过程可以正常编译后,执行wrap加密
PgSQL
----------iname为输入脚本名,oname为输出脚本名
oracle@linux-fz9d:~> wrap iname=sp_test_wrap.sql oname=sp_test_wrap_plb.sql
PL/SQL Wrapper: Release 12.1.0.1.0- 64bit Production on Thu Apr 24 12:19:15 2014
Copyright (c) 1993, 2009, Oracle. All rights reserved.
Processing sp_test_wrap.sql to sp_test_wrap_plb.sql
---------------加密之前的脚本
oracle@linux-fz9d:~> cat sp_test_wrap.sql
create or replace procedure proc1(
p_para1 varchar2
)
as
begin
dbms_output.put_line('p_para3:'||p_para1);
end;
/
---------------加密之后的脚本
oracle@linux-fz9d:~> cat sp_test_wrap_plb.sql
create or replace procedure proc1 wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
70 a6
MJv8blMmvJpCGliPHxGeL1Av/N8wg5nnm7+fMr2ywFwWFpeu33ePCaasqc6mxsqAhAJ8xsoX
KMbK7w4OG5wLS+HIn8Ay/tId1eH7H0majzC1UMipUC8Aykr+CNLHPWmW45ZaVvIhYQlkJjfs
Gt6ydwb8weDXpqaUJ/0Z
/
oracle@linux-fz9d:~>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
----------iname为输入脚本名,oname为输出脚本名
oracle@linux-fz9d:~>wrapiname=sp_test_wrap.sqloname=sp_test_wrap_plb.sql
PL/SQLWrapper:Release12.1.0.1.0-64bitProductiononThuApr2412:19:152014
Copyright(c)1993,2009,Oracle.Allrightsreserved.
Processingsp_test_wrap.sqltosp_test_wrap_plb.sql
---------------加密之前的脚本
oracle@linux-fz9d:~>catsp_test_wrap.sql
createorreplaceprocedureproc1(
p_para1varchar2
)
as
begin
dbms_output.put_line('p_para3:'||p_para1);
end;
/
---------------加密之后的脚本
oracle@linux-fz9d:~>catsp_test_wrap_plb.sql
createorreplaceprocedureproc1wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
70a6
MJv8blMmvJpCGliPHxGeL1Av/N8wg5nnm7+fMr2ywFwWFpeu33ePCaasqc6mxsqAhAJ8xsoX
KMbK7w4OG5wLS+HIn8Ay/tId1eH7H0majzC1UMipUC8Aykr+CNLHPWmW45ZaVvIhYQlkJjfs
Gt6ydwb8weDXpqaUJ/0Z
/
oracle@linux-fz9d:~>
3. 通过wrap加密之后的脚本,重新在数据库中编译一下,然后查看其数据库中的代码
PgSQL
oracle@linux-fz9d:~> sqlplus scott/tiger
SQL*Plus: Release 12.1.0.1.0 Production on Thu Apr 24 12:21:31 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Last Successful login time: Thu Apr 24 2014 12:15:12 -04:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
------------编译加密之后的脚本
SQL> @sp_test_wrap_plb.sql
Procedure created.
------------查看编译之后的存储过程
SQL> select text from dba_source where name='PROC1';
TEXT
--------------------------------------------------------------------------------
procedure proc1 wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
TEXT
--------------------------------------------------------------------------------
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
70 a6
MJv8blMmvJpCGliPHxGeL1Av/N8wg5nnm7+fMr2ywFwWFpeu33ePCaasqc6mxsqAhAJ8xsoX
KMbK7w4OG5wLS+HIn8Ay/tId1eH7H0majzC1UMipUC8Aykr+CNLHPWmW45ZaVvIhYQlkJjfs
TEXT
--------------------------------------------------------------------------------
Gt6ydwb8weDXpqaUJ/0Z
--------------测试编译之后的存储过程
SQL> set serveroutput on
SQL> begin
2 proc1('a');
3 end;
4 /
p_para3:a
PL/SQL procedure successfully completed.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
oracle@linux-fz9d:~>sqlplusscott/tiger
SQL*Plus:Release12.1.0.1.0ProductiononThuApr2412:21:312014
Copyright(c)1982,2013,Oracle.Allrightsreserved.
LastSuccessfullogintime:ThuApr24201412:15:12-04:00
Connectedto:
OracleDatabase12cEnterpriseEditionRelease12.1.0.1.0-64bitProduction
WiththePartitioning,OLAP,AdvancedAnalyticsandRealApplicationTestingoptions
------------编译加密之后的脚本
SQL>@sp_test_wrap_plb.sql
Procedurecreated.
------------查看编译之后的存储过程
SQL>selecttextfromdba_sourcewherename='PROC1';
TEXT
--------------------------------------------------------------------------------
procedureproc1wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
TEXT
--------------------------------------------------------------------------------
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
70a6
MJv8blMmvJpCGliPHxGeL1Av/N8wg5nnm7+fMr2ywFwWFpeu33ePCaasqc6mxsqAhAJ8xsoX
KMbK7w4OG5wLS+HIn8Ay/tId1eH7H0majzC1UMipUC8Aykr+CNLHPWmW45ZaVvIhYQlkJjfs
TEXT
--------------------------------------------------------------------------------
Gt6ydwb8weDXpqaUJ/0Z
--------------测试编译之后的存储过程
SQL>setserveroutputon
SQL>begin
2proc1('a');
3end;
4/
p_para3:a
PL/SQLproceduresuccessfullycompleted.
通过如上简单的一个加密,存储过程的内容编码就屏蔽掉了,只能查看到加密的内容。这种对于在存储过程中有敏感信息的代码非常有作用。但加密好之后,如何解密呢?
正如文章开头所说,oracle并没有提供unwrap的方法,但心细一点的童鞋可能网上已经找到解密的办法了,这里提供一个编译好的java程序,来至于黄伟hellodba,下载地址在文章末尾
,
转载请注明: 版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
最后编辑:2014-06-05作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL
oracle 加密成,Oracle wrap加密 和 unwrap解密过程!相关推荐
- js实现md5加密,可以加密成16位或32位
js实现md5加密,可以加密成16位或32位 md5在线加密工具 js实现md5加密 加密成16位 加密成32位 md5在线加密工具 md5在线加密工具,321在线工具站 https://www.32 ...
- 【安全加密技术】非对称加密
转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46810595 看过上篇网络互联基系列基础的朋友,对安全产生的原因以及策略度有所了解 ...
- oracle中文加密算法,Oracle 加密package解密(unwrap)
最近碰到一个问题,需要解密几个使用oracle wrap加密过的程序包,查了下,已经有很多可用的程序,支持10g,11g,连12c都支持.查找过程中,花了点时间研究了下解密的过程,简单记录一下. 1. ...
- oracle wrap 限制,oracle wrap 加密 | 学步园
oracle提供wrap工具对oracle源代码进行加密,加密后只可见到源代码头部;对于procedure来说就是as之前的部分. wrap使用步骤. 1.建立需加密的程序脚本.以txt文件的形式放到 ...
- 数据安全:通过Oracle的基本函数实现简单加密脱敏函数
注我们获得更多精彩 作者 | 苏星开,云和恩墨南区交付技术顾问,曾服务过通信.能源生产.金融等行业客户,擅长 SQL 审核和优化,DataGuard 容灾等. 概述 这里主要介绍两种操作简易的加密脱密 ...
- Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例
天萃荷净 Database Advanced Security,Oracle研究中心学习笔记:分享一篇关于Oracle数据库网络传输加密笔记,通过配置SQLNET.ora文件使网络传输加密即将客户端也 ...
- Oracle 加密配置,Oracle sqlnet设置网络传输加密
1.查看加密组件 [oracle@yuntestdb ~]$ adapters Installed Oracle Net transport protocols are: IPC BEQ TCP/IP ...
- oracle数字签名,gnupg数字签名与加密详解
gpg命令的使用 一, linux环境 挂载linux光盘安装gnupg-1.4.5-14.i386.rpm 这个是redhat5.4 x86安装光盘下的包,其它版本的系统包名的版本号不一样. [ro ...
- 用wrap加密自己的源代码
Oracle提供了一种简易的源代码保护方式,WRAP,它能把程序的代码变成一堆看不懂的字符. Oracle很多内置程序都使用WRAP进行加密 比如下面是SYS用户下的一个函数: create or r ...
最新文章
- Magento获取指定分类下的所有子分类信息
- 回文串判定_JAVA
- 【运维】详解 /etc/fstab
- 原创《SQL基础知识第2版》PDF高清版,限时下载!
- 异步提交表单插件jquery.form.min.js的使用实例
- Map Reduce和流处理
- 4-5:TCP协议之确认应答(ACK)机制和超时重传机制
- 04 16 团队竞技(第二场) 赛后总结
- java如何脱离ide运行_如何脱离IDE使用自己的jar包?
- (转) lucene+paoding亲密接触
- DEVC++编译奇怪报错问题解决
- java方法不写访问权限_【JAVA小白】 问关于访问权限的问题,写接口遇到错误
- C#图片处理之:亮度和对比度的校正
- mac效率工具alfred 4汉化版
- vue实现全国省市下拉联动菜单,适用于收货地址
- html5车牌效果,车牌自编效果预览软件【京牌】
- NodeJS运行时抛出: Error: listen EADDRINUSE :::3000
- pwm控制直流电机转速流程图_PWM控制直流电机调速
- mac air 2019安装双系统
- R语言实现决策树和朴素贝叶斯分类预测,并比较准确度(含数据集)