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

心不动则不痛 提交于 2020-03-14 04:46:28

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;

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!