Home >Database >Mysql Tutorial >oracle加密工具

oracle加密工具

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 15:26:441186browse

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

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

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

WrapOracle所提供的操作系统级的命令,其加密的原理就是先对源码进行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发给客户使用了,而不必担心你的源代码的暴露。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn