您好,欢迎访问一九零五行业门户网

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

推荐信息