`
wuhuizhong
  • 浏览: 688693 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

Oracle中加密PL/SQL源码

阅读更多

主要是为了保护PL/SQL源代码,防止PL/SQL代码被非法使用。可以使用wrap 工 具或者DBMS_DDL子程序对PL/SQL源码进行加密。wrap工具加密单个源文件,如SQL*Plus脚本。DBMS_DDL子程序加密单个动态生 成的PL/SQL单元,如一个CREATE PROCEDURE声明。加密的源文件可以移动,备份,可被SQL*Plus和Improt和Export工具处理,但在静态数据字典视 图*_SOURCE中无法看到源码。

WRAP语法

wrap iname=input_file [oname=output_file ]

可省略文件扩展名,如以下的命令是等同的:
wrap iname=/mydir/myfile
wrap iname=/mydir/myfile.sql
输出文件默认的扩展名为.plb,当然你也可以指定不同的文件名和扩展名。
wrap iname=/mydir/myfile oname=/yourdir/yourfile.out
wrap主要是混淆PL/SQL语句的主体部分,如下CREATE语句可以被加密:

CREATE [OR REPLACE] FUNCTION function_name
CREATE [OR REPLACE] PROCEDURE procedure_name
CREATE [OR REPLACE] PACKAGE package_name
CREATE [OR REPLACE] PACKAGE BODY package_name
CREATE [OR REPLACE] TYPE type_name AS OBJECT
CREATE [OR REPLACE] TYPE type_name UNDER type_name
CREATE [OR REPLACE] TYPE BODY type_name

CREATE [OR REPLACE] TRIGGER语句不能被加密,但你可调用加密的过程。加密文件中除了语句头部和C风格(/*…*/)注释外,其它所有注释被删除。

 

输出的文件为文本文件,可以在SQL*Plus执行:

SQL> @myfile.plb;

DBMS_DDL子程序
DMBS_DDL包包含WRAP函数和CREATE_WRAPPED过程。CREATE_WRAPPED过程加密语句并创建PL/SQL单元。如下为使用 DBMS_DDL.CREATE_WRAPPED加密包的例子:

DECLARE
package_text VARCHAR2(32767); — text for creating package spec & body
FUNCTION generate_spec (pkgname VARCHAR2) RETURN VARCHAR2 AS
BEGIN
    RETURN ‘CREATE PACKAGE ‘ || pkgname || ‘ AS
      PROCEDURE raise_salary (emp_id NUMBER, amount NUMBER);
      PROCEDURE fire_employee (emp_id NUMBER);
      END ‘ || pkgname || ‘;’;
END generate_spec;

FUNCTION generate_body (pkgname VARCHAR2) RETURN VARCHAR2 AS
BEGIN
    RETURN ‘CREATE PACKAGE BODY ‘ || pkgname || ‘ AS
      PROCEDURE raise_salary (emp_id NUMBER, amount NUMBER) IS
      BEGIN
        UPDATE employees
          SET salary = salary + amount WHERE employee_id = emp_id;
      END raise_salary;
      PROCEDURE fire_employee (emp_id NUMBER) IS
      BEGIN
        DELETE FROM employees WHERE employee_id = emp_id;
      END fire_employee;
    END ‘ || pkgname || ‘;’;
END generate_body;

BEGIN
— Generate package spec
package_text := generate_spec(‘emp_actions’)

— Create wrapped package spec
DBMS_DDL.CREATE_WRAPPED(package_text);

— Generate package body
package_text := generate_body(‘emp_actions’);

— Create wrapped package body
DBMS_DDL.CREATE_WRAPPED(package_text);
END;

分享到:
评论

相关推荐

    PL/SQL Developer 远程连接Oracle数据库

    确保Oracle数据库服务器配置了SSL,并在PL/SQL Developer的连接设置中启用SSL选项。 5. **防火墙设置**:远程连接可能需要通过组织的防火墙。确保1521端口(默认Oracle监听端口)在防火墙中开放,以便传出连接。 6...

    精通Oracle_SQL(第2版)含源码

    3. **高级SQL特性**:书中涵盖了Oracle特有的SQL功能,如PL/SQL过程化语言,游标,递归查询,窗口函数,分析函数,以及在SQL中使用正则表达式等,这些高级特性为复杂的数据处理提供了强大支持。 4. **性能调优**:...

    oracle fyunwrap (oracle对象解密工具)

    Oracle FYunwrap 是一款专为Oracle数据库设计的对象解密工具,主要功能是针对使用`wrap`命令加密的PL/SQL代码进行解密。在Oracle数据库中,`wrap`命令被用来压缩和加密源代码,以保护敏感的数据库逻辑不被轻易查看或...

    oracle 在线考试实例(有sql源码答案)

    在Oracle中,可以使用PL/SQL(Oracle的编程语言扩展)来实现这些功能,通过存储过程、触发器和函数来处理业务逻辑。 5. **复杂性**:提到“在线考试系统(复杂)”,可能意味着该系统包含了高级特性,如动态试题...

    oracle源代码

    10. Oracle开发工具:Oracle提供了一系列开发工具,如SQL Developer、Toad、PL/SQL Developer等,这些工具的使用方法也可以在源代码中找到。 总之,Oracle源代码集合是一个宝贵的资源,它能帮助你深入理解Oracle...

    cx-oracle英文原版.pdf

    - 阐述了如何安全地加密到Oracle数据库的网络流量。 - 解释了如何重置密码和连接自治数据库。 - 描述了连接分片数据库的方法。 ### 5. SQL执行(SQL Execution) - 介绍了使用绑定变量执行SQL语句,使用CLOB和BLOB...

    plsql远程连接服务器

    在这个场景中,重点是配置和使用PL/SQL Developer来连接到位于远程服务器上的Oracle数据库。 首先,我们需要理解远程连接的基本概念。在数据库领域,远程连接意味着从一个不同的物理位置(即不同于数据库服务器的...

    ORACLE中的FTP例子代码

    "ORACLE中的FTP例子代码"这个主题就涉及到了如何在PL/SQL中实现FTP(File Transfer Protocol)功能。这篇博客文章(https://z-one.iteye.com/blog/1604593)提供了一个具体的示例,帮助开发者理解如何利用Oracle内置...

    Oracle培训 Lesson01-16 详细笔记,回顾以及作业,课堂源码

    5. **PL/SQL编程**:Oracle特有的PL/SQL是一种过程化语言,用于编写存储过程、函数和触发器。它是数据库编程的重要部分,允许在数据库内执行复杂逻辑和业务规则。 6. **安全性**:Oracle提供了一套强大的安全机制,...

    sushu.rar_MOD_site:www.pudn.com

    描述中提到的“PL-SQL编程源码”是指使用PL/SQL语言编写的代码,PL/SQL是Oracle数据库系统中的编程语言,它结合了SQL查询语言与过程式编程语言的特点。源码实现了自定义的“mod”函数,这个函数用于判断质数问题。...

    计算机软件-编程源码-Oracle参考资料 1.zip

    3. **SQL和PL/SQL编程**:Oracle的SQL方言提供了丰富的功能,包括复杂的查询、DML操作、存储过程和触发器。PL/SQL是Oracle特有的过程编程语言,用于编写数据库操作的逻辑单元。熟悉这两者是Oracle开发的基础。 4. *...

    oracle_database_9i10g11g编程艺术源码

    源码分析可以帮助理解如何利用PL/SQL进行高效的数据库操作,以及如何构建自定义的存储过程和函数。 接着是Oracle 10g。这一版本的重大改进在于数据库网格计算(Database Grid Computing),允许在多台服务器上无缝...

    超详细Oracle教程.rar

    3. **PL/SQL编程**:Oracle的PL/SQL是一种过程化语言,用于编写存储过程、函数、触发器等。这部分会介绍PL/SQL的语法、变量、控制流程语句、异常处理等,并通过实际示例进行讲解。 4. **数据库管理**:这部分内容将...

    Oracle

    在Oracle数据库中,源码是指用于构建数据库管理系统的核心代码,这部分代码通常是闭源的,但Oracle提供了许多工具来帮助用户管理和优化数据库。这些工具包括SQL*Plus、PL/SQL Developer、SQL Developer等,它们使得...

    Oracle Database 12c 完全参考手册(第7版)源码光盘

    Oracle Database 12c是Oracle公司推出的一款企业级数据库管理系统,是Oracle数据库产品线中的重要组成部分,尤其在大型企业和云计算环境中广泛应用。Oracle 12c引入了许多创新特性,旨在提高性能、可扩展性和云服务...

    Oracle Database 12c 完全参考手册(第7版)源码

    除此之外,Oracle 12c 还包含了如PL/SQL编程、数据库触发器、存储过程、索引策略、物化视图、数据库链接等大量高级特性,这些都是数据库设计和管理中的关键要素。 总的来说,Oracle Database 12c 完全参考手册的...

    oracle

    5. **PL/SQL**:Oracle的编程语言PL/SQL结合了SQL和过程编程,用于编写存储过程、函数、触发器等数据库对象。 6. **数据泵(Data Pump)**:Oracle Data Pump是一种快速的数据迁移工具,用于导入和导出大量数据。 ...

    Oracle+11g+从入门到精通——光盘源码

    在这个压缩包中,你将找到一系列与Oracle 11g相关的源码,这将帮助你深入理解数据库的工作原理,提升你的编程和管理技能。 Oracle 11g的核心知识点包括: 1. **安装与配置**:学习如何在不同的操作系统上安装...

    oracle数据库备份工具(delphi源码)

    在Delphi中,可以通过创建PL/SQL过程或调用系统接口来与RMAN进行交互。 3. **Delphi编程**:使用Delphi开发Oracle备份工具,需要熟悉BDE(Borland Database Engine)或者ODAC(Oracle Data Access Components)等...

    计算机软件-编程源码-轻松掌握Oracle 8数据库开发.zip

    在Oracle 8中,这涉及到用户权限管理、角色、审计和加密。理解如何设置访问控制,防止未授权访问,同时确保数据安全是必要的。 6. **备份与恢复**:Oracle 8提供了多种备份和恢复策略,如物理备份、逻辑备份和RMAN...

Global site tag (gtag.js) - Google Analytics