如何加密Oracle中的存储过程

来源:互联网 发布:网络教育托管是真的吗 编辑:程序博客网 时间:2024/05/05 08:16

    如何加密Oracle中的存储过程,从而在schema下看不到其源码?

  • 软件环境:
      1、操作系统:Windows 2000 Server
      2、数 据 库:Oracle 8i R2 (8.1.7) for NT 企业版
      3、安装路径:C:/ORACLE
  • 实现方法:
    1、
      D:/>set NLS_LANG=AMERICAN_AMERICA.USACII7

      D:/>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

      D:/>set
      直接打set命令可以查看环境变量


    2、
    在D:/下创建a.sql文件,内容如下:
    create or replace procedure test1(i in number) as
    begin
    dbms_output.put_line('输入参数是'||to_char(i));
    end;

    3、
    D:/>wrap iname=a.sql
    PL/SQL Wrapper: Release 8.1.7.0.0 - Production on Tue Nov 27 22:26:48 2001
    Copyright (c) Oracle Corporation 1993, 2000.All Rights Reserved.
    Processing a.sql to a.plb

    4、
    打开a.plb,现在它的内容如下:
    create or replace procedure test1 wrapped
    0
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    3
    7
    8106000
    1
    4
    0
    8
    2 :e:
    1TEST1:
    1I:
    1NUMBER:
    1DBMS_OUTPUT:
    1PUT_LINE:
    1输入参数是:
    1||:
    1TO_CHAR:
    0
    0
    0
    1f
    2
    0 1d 9a 8f a0 b0 3d b4
    55 6a :2 a0 6b 6e 7e :2 a0 a5
    b b4 2e a5 57 b7 a4 b1
    11 68 4f 17 b5
    1f
    2
    0 3 4 1d 19 18 25 15
    2a 2e 32 36 3a 3d 42 45
    49 4d 4e 50 51 56 57 5c
    5e 62 64 70 74 76 7f
    1f
    2
    0 1 b 11 16 :2 11 10 :3 1
    :2 d 16 22 24 2c :2 24 :2 16 :a 1
    1f
    2
    0 :9 1 :d 3 :2 2 :3 1 4 :2 1
    81
    4 :4 0 1 :a 0 1b
    1 :4 0 5 :2 0
    :2 3 :3 0 2 :7 0
    5 4 :3 0 7
    :2 0 1b 2 8
    :2 0 4 :3 0 5
    :3 0 a b 0
    6 :4 0 7 :2 0
    8 :3 0 2 :3 0
    7 f 11 9
    e 13 :3 0 :2 c
    15 :2 0 17 10
    1a :3 0 1a 0
    1a 19 17 18
    :6 0 1b :2 0 2
    8 1a 1d :2 0
    1 1b 1e :8 0

    13
    4
    :3 0 1 3 1
    6 1 10 2
    d 12 1 14
    1 16 2 16
    1c
    1
    4
    0
    1d
    0
    1
    14
    1
    2
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0
    2 0 1
    3 1 0
    0
    /

    5、运行a.plb
    SQL> @d:/a.plb
    过程已创建。

    6、运行存储过程
    SQL> set serveroutput on
    SQL> execute test1(1);
    输入参数是1
    PL/SQL 过程已成功完成。

    7、查看存储过程的代码
    SQL> select name,text from all_source where type='PROCEDURE' and name='TEST1';

    结果:看不到其原码