oracle wrap 存储过程加密

来源:互联网 发布:举报淘宝卖家好评返现 编辑:程序博客网 时间:2024/05/01 20:22

在Oracle存储过程中所包含的商业秘密,有时不愿意被第三方人员看到,可以通过对存储过程加密来实现。

有两种加密存储过程的方法:使用wrap工具或dbms_ddl包。下面介绍wrap。

Wrap是Oracle所提供的操作系统级的命令,语法如下:

wrap iname=input_file [oname=output_file]

参数iname为要加密的文件名,oname为加密后的文件名。如果省略oname,那么将会自动产生一个同名的加密文件名,且后缀为plb。

我们来演示一下wrap工具的用法。首先创建一个名称为test.txt的文件:

[oracle@pigeon ~]$ which wrap
/u01/product/10.2.0/bin/wrap #wrap所在目录
[oracle@pigeon ~]$ wrap iname=test.txt

PL/SQL Wrapper: Release 10.2.0.1.0- Production on Mon Jan 17 15:14:11 2011

Copyright (c) 1993, 2004, Oracle.  All rights reserved.

Processing test.txt to test.plb
[oracle@pigeon ~]$ ls
autostartosw.sh  Desktop  l0db.sh  raw.txt  sde2.dmp  sde.dmp  startdb.sh  stop.pigeon test.plb(新生成一个同名不同后缀的文件) test.txt
 

下面分别查看两个文件的内容:

[oracle@pigeon ~]$ more test.txt
create or replace procedure test
is
begin
dbms_output.put_line('welcome to oracle!');
end;
/
[oracle@pigeon ~]$ more test.plb
create or replace procedure test wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
49 85
zzrHcdOhOYaYaHu+gE2KKyNe6L4wg5nnm7+fMr2ywFznUrLL7pt0i8DAMv7ShsBSm7JK/iiy
veeysx0GMCyuJOqygZt3bl3kaMMC8c8C5FHbXW7D6TIu9tHqJB/2Oab7j44p

/
[oracle@pigeon ~]$ 

下面使用密文创建与调用创建的procedure

[oracle@pigeon ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jan 17 15:16:06 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba;
Connected.

--复制密文:
SQL> create or replace procedure test wrapped
  2  a000000
  3  354
  4  abcd
  5  abcd
  6  abcd
  7  abcd
  8  abcd
  9  abcd
 10  abcd
 11  abcd
 12  abcd
 13  abcd
 14  abcd
 15  abcd
 16  abcd
 17  abcd
 18  abcd
 19  7
 20  49 85
 21  zzrHcdOhOYaYaHu+gE2KKyNe6L4wg5nnm7+fMr2ywFznUrLL7pt0i8DAMv7ShsBSm7JK/iiy
 22  veeysx0GMCyuJOqygZt3bl3kaMMC8c8C5FHbXW7D6TIu9tHqJB/2Oab7j44p
 23 
 24  /

Procedure created.

当需要加密的文件很多时,也可以这样:

SQL> start /home/oracle/test.plb;

Procedure created.

SQL>

SQL> set serveroutput on;
SQL> exec test;#执行test过程,正确输出
welcome to oracle!

PL/SQL procedure successfully completed.

SQL>

现在就可以把文件test.plb发给客户使用了,而不必担心你的源代码的暴露。

关于另一种加密方法,参考本站另一篇文章.

转自:http://www.oracle86.com/a/plsql/2011/0110/51.html

原创粉丝点击