#PLSQL源码加密

默认情况下,用户创建的各项PL/SQL对象源代码作为文本被存储在数据库表中。某些源代码可能涉及企业核心业务逻辑等隐私信息,对其进行加密存储也是企业信息安全的重要一环。

yaswrap是YashanDB提供的专用于对PL/SQL源代码进行加密包装的一个工具,用户可以使用该工具对指定代码文件进行加密,输出包装后的文件,避免他人通过数据库视图如*_SOURCE查看到PL/SQL源码。

用户可以在数据库中直接执行加密后的内容来创建PL/SQL对象,此时数据库表中存储的也是加密后的源代码。之后该PL/SQL可以正常执行,用户对系统的加密和解密无感知。

yaswrap采用了与Oracle兼容的加密算法,不由用户指定。

需注意的是,对PL/SQL源代码进行包装并不是一个安全的隐藏密码或表名的措施。

用户如需要重建一个加密包装后的PL/SQL对象,不应该直接在数据库中编辑,此种方式将导致过程体无法正常执行,而应该修改源文本文件,再重新使用yaswrap进行加密包装。

以下为对一个PL/SQL源码进行加密包装,和解密使用的操作示例:

1.如下为原始PL/SQL语句,保存在mywrap.sql文件中:

CREATE OR replace FUNCTION myAdd(a INT, b INT) RETURN INT AS
BEGIN 
RETURN a + b;
END;
/

2.使用yaswrap工具对mywrap.sql进行包装,生成包装后的mywrap.plb文件:

$ yaswrap iname=mywrap.sql
YashanDB PL/SQL Wrapper: Debug 22.1.0.15 x86_64

Processing mywrap.sql to mywrap.plb

3.生成的mywrap.plb内容:

CREATE OR replace FUNCTION myAdd WRAPPED 
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
46 79
VNCA8yPUw4/UNq3WZDDPDrXdbhkwgwzV1wzR+kdyXoU79Vmhs1rDhUfVs8xa4czsnukmbGPp
Qsph5uB/6gknI8lB4R9JwyHMNbqo+uzVKpaV7Pumk7Jvwg==

/

4.通过yasql执行加密后的PL/SQL语句:

-- 执行包装后的PL/SQL语句
CREATE OR replace FUNCTION myAdd WRAPPED
   2 a000000
   3 354
   4 abcd
   5 abcd
   6 abcd
   7 abcd
   8 abcd
   9 abcd
  10 abcd
  11 abcd
  12 abcd
  13 abcd
  14 abcd
  15 abcd
  16 abcd
  17 abcd
  18 abcd
  19 8
  20 46 79
  21 VNCA8yPUw4/UNq3WZDDPDrXdbhkwgwzV1wzR+kdyXoU79Vmhs1rDhUfVs8xa4czsnukmbGPp
  22 Qsph5uB/6gknI8lB4R9JwyHMNbqo+uzVKpaV7Pumk7Jvwg==
  23
/


SELECT myAdd(1, 2) FROM dual;

  MYADD(1,2)
------------
           3



--从USER_SOURCE中查看function的文本

SELECT text FROM USER_SOURCE WHERE name = 'MYADD';

TEXT
----------------------------------------------------------------
CREATE OR replace FUNCTION myAdd WRAPPED
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
46 79
VNCA8yPUw4/UNq3WZDDPDrXdbhkwgwzV1wzR+kdyXoU79Vmhs1rDhUfVs8xa4czsnukmbGPp
Qsph5uB/6gknI8lB4R9JwyHMNbqo+uzVKpaV7Pumk7Jvwg==

下载文档
复制链接