原始函数:
create or replace function FTEST return varchar2 is
  Result varchar2(32);
  KEY_STR VARCHAR2(64);
begin
  KEY_STR :='ABCDEFGHIJKLMNOPQRSTUVWXYZ-->I CAN SEE IT IN PLB FILE!';
end FTEST;使用wrap工具处理后的plb文件:
create or replace function FTEST wrapped 
0
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
3
8
9000000
1
4

9
2 :e:
1FUNCTION:
1FTEST:
1RETURN:
1VARCHAR2:
1RESULT:
132:
1KEY_STR:
164:
1ABCDEFGHIJKLMNOPQRSTUVWXYZ-->I CAN SEE IT IN PLB FILE!:
00
0
23
2
0 a0 8d a0 b4 a0 2c 6a
a3 a0 51 a5 1c 81 b0 a3
a0 51 a5 1c 81 b0 a0 6e
d b7 a4 a0 b1 11 68 4f
1d 17 b5 
23
2
0 3 f b a 23 27 2b
45 33 7 37 38 40 32 62
50 2f 54 55 5d 4f 69 6d
72 4c 76 7a 7e 80 8c 90
92 93 9c 
23
2
0 1 a 10 0 17 :2 1 3
a 13 12 :2 a :2 3 b 14 13
:2 b :2 3 d 3 :2 1 5 :7 1 
23
4
0 :3 1 0 :3 1
:7 2 :7 3 :3 5 :2 4
6 :7 1 
9e
4
:3 0 1 :3 0 6
:3 0 3 :3 0 2
:a 0 1e 1 :7 0
4 :3 0 4 5
0 1e 2 6
:2 0 8 :2 0 5
4 :3 0 3 9
b :6 0 e c
0 1c 0 5
:6 0 b 1d 0
9 4 :3 0 7
10 12 :6 0 15
13 0 1c 0
7 :6 0 7 :3 0
9 :4 0 16 17
0 19 :3 0 1d
2 :3 0 d 1d
1c 19 1a :6 0
1e :2 0 2 6
1d 21 :3 0 20
1e 22 :8 0 
10
4
:3 0 1 a 1
8 1 11 1
f 1 18 2
d 14 
1
4

21
0
1
14
1
3
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 
2 0 1
8 1 0
f 1 0
0问题:
'ABCDEFGHIJKLMNOPQRSTUVWXYZ-->I CAN SEE IT IN PLB FILE!'
这个字符串常量没有被wrap工具处理,而是直接放入了plb文件中。请教高手我希望上面的字符串也被加密,这样的问题如何解决?

解决方案 »

  1.   

    使用wrap工具打包存储过程和加密的机制是不同的。使用wrap工具打包存储过程产生的plb文件是一个预编译(或者类似)的中间结果,对于常量(数值或字符串),wrap工具不进行编码操作,而是直接输出到plb文件中,所以你看到的plb文件中的所有常量都是明文表示。目前oracle9i的最新wrap工具也没有类似的增强功能,我们可以期待oracle公司下一个版本的wrap工具能够提供类似常量加密的功能。