数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle--使用Wrap工具加密你的SQL


发布日期:2024年08月13日
 
Oracle--使用Wrap工具加密你的SQL

Oracle提供Wrap工具可以用于加密你的Package等

不过需要注意的是加密后的代码无法解密你需要保管好你的源代码

以下是个例子

源代码

create or replace function get_rowid

(l_rowid in varchar

return varchar

is

ls_my_rowid varchar

rowid_type number;

object_number number;

relative_fno number;

block_number number;

row_number number;

begin

dbms_rowidrowid_info(l_rowidrowid_typeobject_numberrelative_fno block_number row_number)

ls_my_rowid := Object# is :||to_char(object_number)||chr()||

Relative_fno is :||to_char(relative_fno)||chr()||

Block number is :||to_char(block_number)||chr()||

Row number is :||to_char(row_number)

return ls_my_rowid ;

end;

/

代码功能测试

[oracle@jumper tools]$ sqlplus scott/tiger

SQL*Plus: Release Production on Mon Nov ::

Copyright (c) Oracle Corporation All rights reserved

Connected to:

Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

SQL> @f_get_rowid

Function created

SQL> select rowid from dept where deptno=;

ROWID

AAABiPAABAAAFRSAAA

SQL> select get_rowid(AAABiPAABAAAFRSAAA) from dual;

GET_ROWID(AAABIPAABAAAFRSAAA

Object# is :

Relative_fno is :

Block number is :

Row number is :

SQL> !

[oracle@jumper tools]$ ls

ctsql ddltsql f_get_rowidsql geteventsql

使用wrap加密及加密后的代码

[oracle@jumper tools]$ wrap iname=f_get_rowidsql oname=f_get_rowidplb

PL/SQL Wrapper: Release Production on Mon Nov ::

Copyright (c) Oracle Corporation All Rights Reserved

Processing f_get_rowidsql to f_get_rowidplb

[oracle@jumper tools]$ cat f_get_rowidplb

create or replace function get_rowid wrapped

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

:e:

FUNCTION:

GET_ROWID:

L_ROWID:

VARCHAR:

RETURN:

LS_MY_ROWID:

:

ROWID_TYPE:

NUMBER:

OBJECT_NUMBER:

RELATIVE_FNO:

BLOCK_NUMBER:

ROW_NUMBER:

DBMS_ROWID:

ROWID_INFO:

Object# is :::

||:

TO_CHAR:

CHR:

:

Relative_fno is :::

Block number is :::

Row number is :::

a d f a b d b

: a c a a a a c

b a a c b a

a c b a a c

b a a c b a a

c b : a b : a a

a e e : a a b b e

e a a b b e e

e b e e : a a b b

e e a a b b e

e e b e e : a a b

b e e a a b b

e e e b e e : a a

b b e d : a b a

b f d b

f e b b

c b

c

d c a c

a c b b bc dd

cc d d c e e eb

ef f f fb ff

d d e

d

c a e

b e

e c f

a b a

b d e a a ab ac b

b b bc bd bf c c c

cd d d d db dd e ed

ef f f

a d : :

: e : e : : d :

: : : f : : f : : d

: d b

: e : : c

e : e : :

: : d f : f

: : :

: d f : f :

: : : :

:

: : :

: : : :

: : : a :b c

: d e : d : e

: d : e : d e

f : d : f : d

: f : d f

: d : : d :

: b :

fb

: :

:a e :

:

: :

: :

:

e a

: b

:

: d f

:

c :

f d

: :

c

:

: : c

a c

a : c

:

e : f

c b

: :

:

c c :

e : :

: b

c d

: f : c

d :

: a :

b : c :

d : e

: a

: :

: : a

: c a c

e e :

: :

:

: :

:

: :

: b :

c e b b

: :

: :

e

:

: :

b :

: : c

: e

d :

: :

: b

d

: :

: b d

: :

: d :

f

:

a :

: :

a d :

d c d c

a b : e

: a d

: e

:

:

e

c

d

f

b

d

f

d a f

a

f c

a

c

e

b

a

c

d

/

测试加密后的代码

[oracle@jumper tools]$ exit

exit

SQL> drop function get_rowid;

Function dropped

SQL> @f_get_rowidplb

Function created

SQL> select get_rowid(AAABiPAABAAAFRSAAA) from dual;

GET_ROWID(AAABIPAABAAAFRSAAA

Object# is :

Relative_fno is :

Block number is :

Row number is :

SQL>

               

上一篇:Oracle小数点的实际保留问题的4方案

下一篇:在Oracle ERP中导数据(BOM清单)