wrap加密可以将PL/SQL的代码实现部分隐藏,提高代码的安全性,如存储过程、函数、包等都隐藏。
wrap加密的方法有两种,下面以函数为例分别介绍一下:
方法一:
编写好函数后保存到 d:\testWrap.sql 文件
CREATE OR REPLACE FUNCTION testwrap RETURN VARCHAR2 IS
BEGIN
RETURN(to_char(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
END testwrap;
打开cmd命令窗口,执行如下命令
D:\>dir test*
驱动器 D 中的卷没有标签。
卷的序列号是 A5EB-573A
D:\ 的目录
2019/06/10 17:22 132 testwrap.sql
1 个文件 132 字节
0 个目录 184,808,128,512 可用字节
D:\>wrap iname=testwrap.sql
PL/SQL Wrapper: Release 11.2.0.4.0- 64bit Production on 星期一 6月 10 17:25:03 2019
Copyright (c) 1993, 2009, Oracle. All rights reserved.
Processing testwrap.sql to testwrap.plb
D:\>dir test*
驱动器 D 中的卷没有标签。
卷的序列号是 A5EB-573A
D:\ 的目录
2019/06/10 17:25 347 testwrap.plb
2019/06/10 17:22 132 testwrap.sql
2 个文件 479 字节
0 个目录 184,808,124,416 可用字节
执行后生成testwrap.plb文件,然后切换到sqlplus中执行 @d:testwrap.plb
该命令执行成功函数即创建并加密完成。
方法二:
直接调用dbms_ddl包的create_wrapped实现加密
BEGIN
dbms_ddl.create_wrapped('CREATE OR REPLACE FUNCTION testwrap RETURN VARCHAR2 IS
BEGIN
RETURN(to_char(SYSDATE, ''yyyy-mm-dd hh24:mi:ss''));
END testwrap;
');
END;
使用这种方法加密需要注意符号的转译。
通过如上所述的两种方法,可以对存储过程、函数、包等加密,无法看到其具体实现。