在一些代码中,使用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解密过程!相关推荐

  1. js实现md5加密,可以加密成16位或32位

    js实现md5加密,可以加密成16位或32位 md5在线加密工具 js实现md5加密 加密成16位 加密成32位 md5在线加密工具 md5在线加密工具,321在线工具站 https://www.32 ...

  2. 【安全加密技术】非对称加密

    转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46810595 看过上篇网络互联基系列基础的朋友,对安全产生的原因以及策略度有所了解 ...

  3. oracle中文加密算法,Oracle 加密package解密(unwrap)

    最近碰到一个问题,需要解密几个使用oracle wrap加密过的程序包,查了下,已经有很多可用的程序,支持10g,11g,连12c都支持.查找过程中,花了点时间研究了下解密的过程,简单记录一下. 1. ...

  4. oracle wrap 限制,oracle wrap 加密 | 学步园

    oracle提供wrap工具对oracle源代码进行加密,加密后只可见到源代码头部;对于procedure来说就是as之前的部分. wrap使用步骤. 1.建立需加密的程序脚本.以txt文件的形式放到 ...

  5. 数据安全:通过Oracle的基本函数实现简单加密脱敏函数

    注我们获得更多精彩 作者 | 苏星开,云和恩墨南区交付技术顾问,曾服务过通信.能源生产.金融等行业客户,擅长 SQL 审核和优化,DataGuard 容灾等. 概述 这里主要介绍两种操作简易的加密脱密 ...

  6. Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例

    天萃荷净 Database Advanced Security,Oracle研究中心学习笔记:分享一篇关于Oracle数据库网络传输加密笔记,通过配置SQLNET.ora文件使网络传输加密即将客户端也 ...

  7. Oracle 加密配置,Oracle sqlnet设置网络传输加密

    1.查看加密组件 [oracle@yuntestdb ~]$ adapters Installed Oracle Net transport protocols are: IPC BEQ TCP/IP ...

  8. oracle数字签名,gnupg数字签名与加密详解

    gpg命令的使用 一, linux环境 挂载linux光盘安装gnupg-1.4.5-14.i386.rpm 这个是redhat5.4 x86安装光盘下的包,其它版本的系统包名的版本号不一样. [ro ...

  9. 用wrap加密自己的源代码

    Oracle提供了一种简易的源代码保护方式,WRAP,它能把程序的代码变成一堆看不懂的字符. Oracle很多内置程序都使用WRAP进行加密 比如下面是SYS用户下的一个函数: create or r ...

最新文章

  1. Magento获取指定分类下的所有子分类信息
  2. 回文串判定_JAVA
  3. 【运维】详解 /etc/fstab
  4. 原创《SQL基础知识第2版》PDF高清版,限时下载!
  5. 异步提交表单插件jquery.form.min.js的使用实例
  6. Map Reduce和流处理
  7. 4-5:TCP协议之确认应答(ACK)机制和超时重传机制
  8. 04 16 团队竞技(第二场) 赛后总结
  9. java如何脱离ide运行_如何脱离IDE使用自己的jar包?
  10. (转) lucene+paoding亲密接触
  11. DEVC++编译奇怪报错问题解决
  12. java方法不写访问权限_【JAVA小白】 问关于访问权限的问题,写接口遇到错误
  13. C#图片处理之:亮度和对比度的校正
  14. mac效率工具alfred 4汉化版
  15. vue实现全国省市下拉联动菜单,适用于收货地址
  16. html5车牌效果,车牌自编效果预览软件【京牌】
  17. NodeJS运行时抛出: Error: listen EADDRINUSE :::3000
  18. pwm控制直流电机转速流程图_PWM控制直流电机调速
  19. mac air 2019安装双系统
  20. R语言实现决策树和朴素贝叶斯分类预测,并比较准确度(含数据集)

热门文章

  1. 语音识别的历史和产品
  2. 开发经验总结-点滴积累
  3. 主数据管理解决方案(PPT完整版)
  4. qt中怎样添加库文件
  5. C++计算某个数的所有因数
  6. 七麦数据:2018年App Store大数据半年盘点(附下载)
  7. 最好用的时间管理APP都在这了
  8. 【ERC-721与ERC-1155有什么区别?】
  9. ural 1155. Troubleduons
  10. 华为Ascend昇腾CANN详细教程(一)