好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

oracle加密工具

在 Oracle 存储过程中所包含的商业秘密,有时不愿意被第三方人员看到,可以通过对存储过程加密来实现。 有两种加密存储过程的方法:这里重点介绍 wrap: Wrap 是 Oracle 所提供的操作系统级的命令 ,其加密的原理就是先对源码进行 lz 压缩 lzstr ,然后对压

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

有两种加密存储过程的方法:这里重点介绍 wrap:

Wrap 是 Oracle 所提供的操作系统级的命令 ,其加密的原理就是先对源码进行 lz 压缩 lzstr ,然后对压缩数据进行 SHA-1 运算得到 40 位的加密串 shstr ,然后将加密串与压缩串拼接得到 shstr+lzstr ,然后对拼接后的字符串进行 Oracle 双字符转换(转换表)。最后将转换后的字符串进行 base64 编码,最终得到 wrap 的加密串。 Oracle 本身没有提供 unwrap 工具, wrap 语法如下:

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 发给客户使用了,而不必担心你的源代码的暴露。

查看更多关于oracle加密工具的详细内容...

  阅读:47次