文字
分享

【加入收藏】 【访客留言】 【聊天室】 【技术站点导航】 【技术论坛(BBS)】
位置:首页→索引、序列、快照、数据库链路、触发器......→

【点击:】 阿木伯 著
如何加密Oracle中的存储过程,从而在schema下看不到其源码?

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    138

    139

    140

    141

    142

    143

    144

    145

    146

    147

    148

    149

    150

    151

    152

    153

    154

    155

    156

    157

    158

    159

    160

    161

    162

    163

    164

    165

    166

    167

    168

    169

    170

    171

    172

    173

    174

    175

    176

    177

    178

    179

    180

    181

    182

    183

    184

    185

    186

    187

    188

    189

    190

    191

    192

    193

    194

    195

    196

    197

    198

    199

    200

    201

    202

    203

    204

    205

    206

    207

    208

    209

    210

    211

    212

    213

    214

    215

    216

    217

    218

    219

    220

    221

    222

    223

    224

    225

    226

    227

    228

    229

    230

    231

    232

    233

    234

    235

    236

    237

    238

    239

    240

    241

    242

    243

    244

    245

    246

    247

    248

    249

    250

    251

    252

    253

    254

    255

    256

    257

    258

    259

    260

    261

    262

    263

    264

    265

    266

    267

    268

    269

    270

    271

    272

    273

    274

    275

    276

    277

    278

    279

    280

    281

    282

    283

    284

    285

    286

    287

    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';

     

      

     

    结果:看不到其原码

【最后更新: