引言:平时大家在做项目的时候,经常会遇到把Oracle存储过程带到项目现场来测试系统。这时如果想对自己的存储过程进行保密,不使别人看到源代码,就可以对已有的存储过程进行加密保护。顾名思义,就是对Oracle存储过程源码的加密。当然不是什么时候都需要的,当有的项目对安全性要求比较高的时候可以采用,下面我就用案例来介绍这种加密方式和实验结果。
实验环境
操作系统版本
Red Hat Enterprise Linux Server release 6.5 (Santiago)
数据库版本
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
数据库实例名
shdb
wrap路径
Oracle的oracle_home/bin目录下有wrap 命令.
/opt/oracle/product/11.2.0/db_1/bin/wrap
实验开始
1.创建一个sql文件,在oracle用户家目录下创建
[oracle@zxt28 ~]$ vim leonarding.sql
create or replace procedure leo(i in number)
as
begin
dbms_output.put_line('input parameter: '||to_char(i));
end;
保存&退出
[oracle@zxt28 ~]$ ll
total 3664228
drwxr-xr-x 7 oracle oinstall 4096 Aug 27 2013 database
drwxr-xr-x 2 oracle oinstall 4096 Jan 7 15:46 Desktop
-rw-r--r-- 1 oracle oinstall 128 Jan 14 16:49 leonarding.sql 已经生成
-rwxr-xr-x 1 root root 1395582860 Oct 17 2013 p13390677_linux-x86-64_11gR2040_database_1of2.zip
-rwxr-xr-x 1 root root 1151304589 Oct 17 2013 p13390677_linux-x86-64_11gR2040_database_2of2.zip
-rwxr-xr-x 1 root root 1205251894 Oct 16 2013 p13390677_linux-x86-64_11gR2040_grid.zip
2.Wrap方式加密
用法:
wrap的用法还是比较简单的,一个命令就可以实现加密,以下是命令的格式
wrap iname=input_file [ oname=output_file ]
iname:指定的是源文件
oname:指定的是转换后加密文件,oname选项可以省略如果省略wrap命令会自动生成文件名一模一样的加密文件,当然你也可以指定自己命名方式,如下所示
[oracle@zxt28 ~]$ wrap iname=leonarding.sql
PL/SQL Wrapper: Release 11.2.0.4.0- 64bit Production on Thu Jan 14 16:57:46 2016
Copyright (c) 1993, 2009, Oracle. All rights reserved.
Processing leonarding.sql to leonarding.plb 自动生成文件名一模一样的加密文件
[oracle@zxt28 ~]$ ll
total 3664232
drwxr-xr-x 7 oracle oinstall 4096 Aug 27 2013 database
drwxr-xr-x 2 oracle oinstall 4096 Jan 7 15:46 Desktop
-rw-r--r-- 1 oracle oinstall 322 Jan 14 16:57 leonarding.plb
-rw-r--r-- 1 oracle oinstall 128 Jan 14 16:49 leonarding.sql
此时文件leonarding.plb的内容就是加密状态,如下所示
[oracle@zxt28 ~]$ vim leonarding.plb
create or replace procedure leo wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
6f b6
nkxs9EzOsgeU6oDhPIYrMqr6O5cwg5nnm7+fMr2ywFyFodexpcOl0l6lmYEywLIlw4/AdCuP
wMAyW55SPqmpbbcguDSqEVpnEeMcL8b4MJK+J00Xi5SJpxaOFG9si+inGm+ko88RnCMuLuOq
NAMHC8hAsOjoDeGcCk+ZyF0G4Kam2x0svw==
自己指定加密文件命名
[oracle@zxt28 ~]$ rm leonarding.plb
[oracle@zxt28 ~]$ wrap iname=leonarding.sql oname=leo.plb
PL/SQL Wrapper: Release 11.2.0.4.0- 64bit Production on Thu Jan 14 16:59:58 2016
Copyright (c) 1993, 2009, Oracle. All rights reserved.
Processing leonarding.sql to leo.plb
[oracle@zxt28 ~]$ ll
total 3664232
drwxr-xr-x 7 oracle oinstall 4096 Aug 27 2013 database
drwxr-xr-x 2 oracle oinstall 4096 Jan 7 15:46 Desktop
-rw-r--r-- 1 oracle oinstall 128 Jan 14 16:49 leonarding.sql
-rw-r--r-- 1 oracle oinstall 322 Jan 14 16:59 leo.plb