可以使用wrap 工具或者DBMS_DDL子程序?qū)L/SQL源碼進(jìn)行加密。wrap工具加密單個(gè)源文件,如SQL*Plus腳本。DBMS_DDL子程序加密單個(gè)動(dòng)態(tài)生成的PL/SQL單元,如一個(gè)CREATE PROCEDURE聲明。加密的源文件可以移動(dòng),備份,可被SQL*Plus和Improt和Export工具處理,但在靜態(tài)數(shù)據(jù)字典視圖*_SOURCE中無(wú)法看到源碼。 WRAP語(yǔ)法 wrap iname=input_file [oname=output_file ] 可省略文件擴(kuò)展名,如以下的命令是等同的: wrap iname=/mydir/myfile wrap iname=/mydir/myfile.sql 輸出文件默認(rèn)的擴(kuò)展名為.plb,當(dāng)然你也可以指定不同的文件名和擴(kuò)展名。 wrap iname=/mydir/myfile oname=/yourdir/yourfile.out wrap主要是混淆PL/SQL語(yǔ)句的主體部分,如下CREATE語(yǔ)句可以被加密: CREATE [OR REPLACE] FUNCTION function_name
創(chuàng)新互聯(lián)專注于寶安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供寶安營(yíng)銷型網(wǎng)站建設(shè),寶安網(wǎng)站制作、寶安網(wǎng)頁(yè)設(shè)計(jì)、寶安網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造寶安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供寶安網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
CREATE [OR REPLACE] PROCEDURE procedure_name
CREATE [OR REPLACE] PACKAGE package_name
CREATE [OR REPLACE] PACKAGE BODY package_name
CREATE [OR REPLACE] TYPE type_name AS OBJECT
CREATE [OR REPLACE] TYPE type_name UNDER type_name
CREATE [OR REPLACE] TYPE BODY type_name CREATE [OR REPLACE] TRIGGER語(yǔ)句不能被加密,但你可調(diào)用加密的過(guò)程。加密文件中除了語(yǔ)句頭部和C風(fēng)格(/*…*/)注釋外,其它所有注釋被刪除。
最簡(jiǎn)單的,把sys收了,異用戶查詢授權(quán)。
要是涉及到代碼移交,那就用函數(shù)實(shí)現(xiàn)view,然后用DBMS_DDL.WRAP加密
Oracle提供Wrap工具 可以用于加密你的Package等
不過(guò)需要注意的是 加密后的代碼無(wú)法解密 你需要保管好你的源代碼
以下是個(gè)例子
源代碼
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_rowid rowid_info(l_rowid rowid_type object_number relative_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;
/
代碼功能測(cè)試
[oracle@jumper tools]$ sqlplus scott/tiger
SQL*Plus: Release Production on Mon Nov : :
Copyright (c) Oracle Corporation ? All rights reserved
Connected to:
Oracle i 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
ct sql? ddlt sql? f_get_rowid sql? getevent sql
使用wrap加密及加密后的代碼
[oracle@jumper tools]$ wrap iname=f_get_rowid sql oname=f_get_rowid plb
PL/SQL Wrapper: Release Production on Mon Nov : :
Copyright (c) Oracle Corporation ? All Rights Reserved
Processing f_get_rowid sql to f_get_rowid plb
[oracle@jumper tools]$ cat f_get_rowid plb
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
/
測(cè)試加密后的代碼
[oracle@jumper tools]$ exit
exit
SQL drop function get_rowid;
Function dropped
SQL @f_get_rowid plb
Function created
SQL select get_rowid( AAABiPAABAAAFRSAAA ) from dual;
GET_ROWID( AAABIPAABAAAFRSAAA )
Object# is????? :
Relative_fno is :
Block number is :
Row number is?? :
lishixinzhi/Article/program/Oracle/201311/18606