首页 使用Wrap加密保护Oracle程序源代码

使用Wrap加密保护Oracle程序源代码

举报
开通vip

使用Wrap加密保护Oracle程序源代码使用Wrap加密保护Oracle程序源代码 存储过程、函数、包等结构,表示了软件系统的业务逻辑和领域逻辑。将业务逻辑组织在数据层之上,特别是数据库软件中,是一种比较传统和常见的做法。虽然这种方式与时下流行的设计理念有差异,但是在实际工作中却有着很多优势。 作为领域逻辑的代表,具体的过程实现对软件企业来说,是一笔重要的无形资产财富,是需要额外进行保护的。但是在Oracle中,我们是可以直接的看到各种函数逻辑的实现。所以,我们需要一种手段,保护在Oracle数据字典中保存的源代码信息。 在Oracle中,推出了W...

使用Wrap加密保护Oracle程序源代码
使用Wrap加密保护Oracle程序源代码 存储过程、函数、包等结构, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示了软件系统的业务逻辑和领域逻辑。将业务逻辑组织在数据层之上,特别是数据库软件中,是一种比较传统和常见的做法。虽然这种方式与时下流行的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 理念有差异,但是在实际工作中却有着很多优势。 作为领域逻辑的代表,具体的过程实现对软件企业来说,是一笔重要的无形资产财富,是需要额外进行保护的。但是在Oracle中,我们是可以直接的看到各种函数逻辑的实现。所以,我们需要一种手段,保护在Oracle数据字典中保存的源代码信息。 在Oracle中,推出了Wrap技术,既可以实现代码的加密,使用户不能够直接获取到程序代码的DDL语句,同时不会影响到程序代码的执行。在最新的Oracle版本中,提供了两种方式进行Wrap加密。 1 Wrap命令行工具,可以在命令行中实现源代码文件的加密; 2 Dbms_ddl包,其中包括的方法也可以实现在PL/SQL中进行代码的加密; 非Wrap使用时的情况 首先,我们可以查看在没有进行Wrap处理的时候,Oracle如何进行源代码保存。 演示代码,本文中将使用该段SP作为演示内容。 SQL> create or replace procedure p_wrap_test_nc 2 (o_vc_message out varchar2) 3 is 4 begin 5 dbms_output.put_line('wrap Test Procedure working!'); 6 end p_wrap_test_nc; 7 / Procedure created. 当没有进行Wrap处理的时候,我们可以通过DBMS_METADATA和user_source等数据字典工具查看到源代码。 SQL> set serveroutput on size 10000; SQL> exec dbms_output.put_line(dbms_metadata.get_ddl(object_type=>'PROCEDURE',name=>'P_WRAP_TEST_NC')); CREATE OR REPLACE PROCEDURE "SCOTT"."P_WRAP_TEST_NC" (o_vc_message out varchar2) is begin dbms_output.put_line('wrap Test Procedure working!'); end p_wrap_test_nc; SQL> ; 1 select line,text from user_source 2* where lower(name)='p_wrap_test_nc' SQL> / LINE TEXT ---------- ------------------------------------------------------------------------------- 1 procedure p_wrap_test_nc 2 (o_vc_message out varchar2) 3 is 4 begin 5 dbms_output.put_line('wrap Test Procedure working!'); 6 end p_wrap_test_nc; 6 rows selected. 使用Wrap命令行工具进行加密处理 使用Wrap命令行处理是比较传统的源代码加密手段。思路和过程如下: 1. 将编写好并且调试好的程序,保存为.sql源代码文件,保存在本地磁盘上; 2. 通过命令行工具wrap,将源代码文件处理为加密过的文件(通常为.plb 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 )。此时的文件内容,已经是加密过的; 3. 在Oracle的命令行中执行处理过的加密文件。Oracle可以将加密信息识别为正确的代码信息,并且将加密文保存在数据字典中; 4. 开发人员要妥善保管源代码文件,防止丢失; 下面进行过程演示。 首先,将存储过程定义文件p_wrap_test_nc保存为.sql文件,名称为p_wrap_test_nc.sql,之后进行处理。 Wrap工具有两个参数,iname和oname。Iname指定的进行处理的文件名称,而oname指定的是处理后的输出文件。 //命令行处理 E:\>wrap iname=p_wrap_test_nc.sql oname=p_res_nc.plb PL/SQL Wrapper: Release10.2.0.1.0- Production on星期三5月 18 13:10:46 2011 Copyright (c) 1993, 2004, Oracle. All rights reserved. Processing p_wrap_test_nc.sql to p_res_nc.plb 此时如果打开输‎‎出文件,可以看到加密过的密文代码。 create or replace procedure P_WRAP_TEST_NC wrapped a000000 93 ce bmPSrzSW+JbvbB0IrfiI/oW92IYwg0zwfyisfI45kJpkzm6pla+NJokfFPdh3plfljn9C1nb w3O1Zdpo9ZxuTivH2iNAtzHVSfeEjowmNvtLZd6IVzY9f4oEfz5krpcsJuGBN6u5IwMCeYI2 MTT9hjiE/+3uwnVOQwJ1GSxTNNEpkte9Tuws/sGy+FHlNX6DnVLt+Pv3Jz4d.... 接下来,通过执行这些加密文件,来创建对象。 //执行生成的代码文件 SQL> @e:\p_res_nc.plb Procedure created 之后,通过执行存储过程,来确定对象创建。 --执行成功 SQL> set serveroutput on size 10000; SQL> var x varchar2(100); exec P_WRAP_TEST_NC(:x); SQL> Wrap Test Procedure Working ! PL/SQL procedure successfully completed x --------- 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 ,数据库中已经建立了该对象,可以执行成功。接下来,我们通过查看数据字典信息确定是否加密。 //获取源文件 SQL> exec dbms_output.put_line(dbms_metadata.get_ddl(object_type => 'PROCEDURE',name => 'P_WRAP_TEST_NC')); CREATE OR REPLACE PROCEDURE "SYS"."P_WRAP_TEST_NC" wrapped a000000 7 93 ce bmPSrzSW+JbvbB0IrfiI/oW92IYwg0zwfyisfI45kJpkzm6pla+NJokfFPdh3plfljn9C1nb w3O1Zdpo9ZxuTivH2iNAtzHVSfeEjowmNvtLZd6IVzY9f4oEfz5krpcsJuGBN6u5IwMCeYI2 MTT9hjiE/+3uwnVOQwJ1GSxTNNEpkte9Tuws/sGy+FHlNX6DnVLt+Pv3Jz4d (篇幅原因,有省略……) PL/SQL procedure successfully completed //检查数据字典信息 SQL> select line,text from user_source where name='P_WRAP_TEST_NC'; LINE TEXT ---------- -------------------------------------------------------------------------------- 1 procedure P_WRAP_TEST_NC wrapped bmPSrzSW+JbvbB0IrfiI/oW92IYwg0zwfyisfI45kJpkzm6pla+NJokfFPdh3plfljn9C1nb w3O1Zdpo9ZxuTivH2iNAtzHVSfeEjowmNvtLZd6IVzY9f4oEfz5krpcsJuGBN6u5IwMCeYI2 MTT9hjiE/+3uwnVOQwJ1GSxTNNEpkte9Tuws/sGy+FHlNX6DnVLt+Pv3Jz4d 结论:使用Wrap命令行加密的原则,就是将源代码独立作为文件单独保存,在数据字典中仅仅保存加密过的密文。这样,就剔除了Oracle数据库作为源代码容器的作用,也就防止业务逻辑和关键信息算法的丢失。 除了使用Wrap工具外,还可以使用DBMS_DDL包进行处理。这种方式就是在PL/SQL代码中实现加密处理。 DBMS_DDL包有两个处理方法,一个为Wrap的函数,另一个是Create_Wrap的存储过程。 DBMS_DDL.Wrap函数是将一个字符串(或者类似的结构体),作为参数传入其中,返回加密过的代码信息。但是,wrap函数只是将代码加密,并不执行。
本文档为【使用Wrap加密保护Oracle程序源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-12-10
浏览量:12