Oracle存储过程、函数、包加密wrap

wrap加密可以将PL/SQL的代码实现部分隐藏,提高代码的安全性,如存储过程、函数、包等都隐藏。

wrap加密的方法有两种,下面以函数为例分别介绍一下:

方法一:

编写好函数后保存到 d: estWrap.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;

 使用这种方法加密需要注意符号的转译。

通过如上所述的两种方法,可以对存储过程、函数、包等加密,无法看到其具体实现。

原文地址:https://www.cnblogs.com/colaclicken/p/10999245.html