wrap加密可以将PL/SQL的代码实现部分隐藏,提高代码的安全性,如存储过程、函数、包等都隐藏。
wrap加密的方法有两种,下面以函数为例分别介绍一下:
方法一:
编写好函数后保存到 d:\testWrap.sql 文件
CREATE OR REPLACE FUNCTION testwrap RETURN VARCHAR2 ISBEGIN 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.sqlPL/SQL Wrapper: Release 11.2.0.4.0- 64bit Production on 星期一 6月 10 17:25:03 2019Copyright (c) 1993, 2009, Oracle. All rights reserved.Processing testwrap.sql to testwrap.plbD:\>dir test* 驱动器 D 中的卷没有标签。 卷的序列号是 A5EB-573A D:\ 的目录2019/06/10 17:25 347 testwrap.plb2019/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 ISBEGIN RETURN(to_char(SYSDATE, ''yyyy-mm-dd hh24:mi:ss''));END testwrap;');END;
使用这种方法加密需要注意符号的转译。
通过如上所述的两种方法,可以对存储过程、函数、包等加密,无法看到其具体实现。