当前位置:  数据库>oracle

Oracle中加密PL/SQL代码

    来源: 互联网  发布时间:2017-05-04

    本文导语: 下面不才根据Oracle官方文档讲解一下如何加密PL/SQL代码,希望大家共同学习: 主要内容包含以下三块: What is Obfuscation? Obfuscating PL/SQL Code With the wrap Utility Obfuscating PL/QL Code With DBMS_DDL Subprograms 一、什么叫加密(二进制文件的...

下面不才根据Oracle官方文档讲解一下如何加密PL/SQL代码,希望大家共同学习:

主要内容包含以下三块:

一、什么叫加密(二进制文件的混淆技术混淆 Obfuscation)?

加密一个PL/SQL单元就是隐藏PL/SQL代码的过程。可以使用oracle提供的wrap工具和DBMS_DDL进行加密。

wrap工具在命令行运行来处理一个输入的SQL 文件,例如SQL*PLUS的安装脚本。DBMS_DDL子程序加密单个动态生成的PL/SQL 单元,例如一个‘CREATE PROCEDURE’声明。

       加密的优点:

     1. 防止其他开发人员滥用你的应用或者商业竞争者偷看你的逻辑。

     2. 加密后即使通过USER_SOURCE、ALL_SOURCE或者DBA_SOURCE数据字典看不见源代码  。

     3. SQL*PLUS可以处理加密后的程序。

     4. 导入导出工具也支持加密代码,你可以备份或者移动已经加密的存储过程。     

      对加密的一些提示:

     1. 当加密一个包或者对象类型,只加密包体不加密声明。这就允许开发人员看见将要使用的包或类型的声明,但是看不到实现。

     2. 加密后的源码不可以编辑,如果要修改可以编辑源代码,然后再加密。你也可以推迟加密操作到源代码最终被应用。

     3. 为了确保所有重要的源代码都被加密,最好加密后在编辑器中查看确认。 

     加密方法的局限性:

     1.  虽然加密帮助隐藏源程序的逻辑并且使解密变的异常困难,Oracle并不推荐使用该方法加密用户密码和表名。

        加密PL/SQL代码不能绝对阻止一切试图查看源代码的操作。

      2. 加密不支持触发器,为了隐藏一个触发器的工作,我们可以写一个one-line触发器来调用已经加密的存储过程。

      3. 加密的过程并不会去检查PL/SQL代码中的语法或者语义上的错误,例如表或视图不存在。这些错误只有在编译或执行的时候才会检查被发现。

      4. 被加密的PL/SQL程序不能导入到低版本的数据库中,Oracle支持是向上兼容,不支持向下兼容。例如,你能装载在V8.15上加密过的文件到

           V8.16,但是反过来就不行!

      5. 由于源代码是PL/SQL编译器解析,而不是SQL*PLUS,所以要使用wrap工具加密的PL/SQL代码中不能使用SQL*PLUS符号声明的替代变量。

      6. 绝大多数的注释将在加密的文件中去处。See "Input and Output Files for the PL/SQL wrap Utility".

      7.如果调用DBMS_SQL.PARSE方法解析已通过DBMS_DDL.WRAP加密的PL/SQL单元时遇到语句使用了超过32767的VARCHAR2文本类型 ,需要设置LFFLG参数为

     FALSE。否则DBMS_SQL.PARSE往加密的单元中新增行将会破坏程序单元! 

二、使用WRAP工具加密PL/SQL代码:

       wrap工具介绍:

       1. warp只处理PL/SQL块,不会处理匿名块或者触发器或者非PL/SQL块。

       2. 语法如下:

       wrap iname=input_file [oname=output_file]      注:等号左右不能有空格

       input_file 是包含SQL语句的文件名,扩展名不写默认为.sql,也可以使用其他扩展格式:

       例如:

   wrap iname=/mydir/myfile
   wrap iname=/mydir/myfile.sql
   wrap iname=/mydir/myfile.src

      output_file 是加密后生成的文件名,扩展名为.pld。也可以使用其他扩展格式:

      例如:

   wrap iname=/mydir/myfile.sql oname=/mydir/myfile.plb

   wrap iname=/mydir/myfile oname=/yourdir/yourfile.out 

       wrap使用案例:

       For example, assume that the wrap_test.sql file contains the following:

  • CREATE OR REPLACE PROCEDURE wraptest IS  
  •   TYPE emp_tab IS TABLE OF employees%ROWTYPE INDEX BY PLS_INTEGER;  

  •     
     
     

    您可能感兴趣的文章:

  • Oracle定义DES加密解密及MD5加密函数示例
  • Oracle数据库替代加密算法
  • 采用Oracle的dbms_obfuscation_toolkit的加密和解密详解
  • Oracle 存储过程加密方法
  • oracle下加密存储过程的方法
  • oracle 存储过程加密的方法
  • Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享
  • oracle 创建表空间步骤代码
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • Oracle E-Business套件多个认证绕过及代码注入漏洞
  • Linux下Oracle归档日志自动清理脚本代码(sh)
  • ProC 连接Oracle代码
  • oracle查看会话锁定的所有对象代码分享
  • Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码
  • 怎样在c语言的代码里内嵌的操作oracle数据库,各位大虾谢谢了
  • Linux oracle数据库自动备份自动压缩脚本代码
  • linux下用什么办法连接oracle数据库并且读取数据呢?(用c++代码实现时)
  • oracle命令行删除与创建用户的代码
  • oracle下实现恢复一个丢失的数据文件的代码
  • 谁有oracle存储过程的原代码?谢谢!
  • Java 获得Oracle 的错误代码
  • 那位兄弟给段代码:连接Oracle数据库的。
  • php连接oracle数据库的示例代码
  • Oracle向Linux kernel加入数据完整性代码
  • 在oracle下要在同一事务下插入多条记录,该怎么做??最好要有原代码
  • Oracle 外连接实现代码
  • oracle代码的常见错误汇总
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle中DBMS_SQL解析SQL语句的流程 iis7站长之家
  • Oracle 数据库开发工具 Oracle SQL Developer
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • 取数据库前几条数据(sql server、oracle、mysql)的sql写法
  • Oracle发布Oracle SQL Developer 1.2数据库开发工具 帮助用户简化开发工作
  • oracle用什么SQL语句判断表存不存在
  • 与jsp搭配,oracle好?sql server好?
  • Oracle开发工具 Oracle SQL Handler
  • Oracle与SQL Server区别在哪里
  • oracle sql执行过程(流程图)
  • Oracle的SQL语句中如何处理‘&’符号
  • oracle中得到一条SQL语句的执行时间的两种方式
  • 怎么写一个Shell来执行这样的功能,访问Oracle数据库,然后执行一个SQL脚本,生成一个文件。急!
  • Oracle捕获问题SQL解决CPU过渡消耗
  • Oracle中SQL语句连接字符串的符号使用介绍
  • Unix系统下oracle sql排版
  • oracle.xml.sql.query.OracleXMLQuery
  • oracle SQL解析步骤小结
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • Oracle中DBMS_SQL解析SQL语句的流程
  • Linux/UNIX下,C++程序通过那些步骤访问Oracle或者Sybase SQL数据库?
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,