oracle 加密儲存過程create_wrapped

perfychi發表於2014-03-12
create_wrapped 

除了wrap函式外,在dbms_ddl包中還包括三個過載的create_wrapped過程:

PROCEDURE create_wrapped(ddl VARCHAR2);

PROCEDURE create_wrapped(ddl dbms_sql.varchar2s, lb PLS_INTEGER,

                         ub PLS_INTEGER);

PROCEDURE create_wrapped(ddl dbms_sql.varchar2a, lb PLS_INTEGER,

                         ub PLS_INTEGER);

它們擁有和wrap一樣的入參和出參。使用方法也和wrap函式類似,不過要注意它們是過程(而不是函式)。

與函式wrap不同,過程create_wrapped不但加密原始碼,而且還會在資料庫中執行加密後的密文。我們先看一個例子,我要在資料庫中以加密的方式建立這個過程:

create or replace procedure p1asbegin


dbms_output.put_line(’yuechaotian’);

end;

我可以藉助過程dbms_ddl.create_wrapped:

SQL> begin 2 dbms_ddl.create_wrapped 3 (’create or replace procedure p1


4    as

5    begin

6      dbms_output.put_line(‘’yuechaotian’‘); --*2個單引號*

7    end;’);

8 end;

9 /


PL/SQL 過程已成功完成。


SQL> set serveroutput on

SQL> exec p1

yuechaotian


PL/SQL 過程已成功完成。

看看加密後的程式碼:


– 1. 從檢視 user_source 中查詢SQL> set pagesize 1000SQL> col text format a100


SQL> set line 2000

SQL> SELECT TEXT FROM user_source WHERE NAME = ‘P1′;


TEXT

————————————————————————–

procedure p1 wrapped

a000000

354

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

7

4a 81

aVtlrmIdKjyE1rQszxgCZ9Z7+YEwg5nnm7+fMr2ywFwWfF0Jabh0OdPc4rlBP2ejNa+V+nhX

GSQhFMohoijjhhB6c3Eqd9UMXreC004MZbZOdyo7N55Mc3HyiKbboLaf


– 2. 使用 get_ddl 查詢

SQL> set long 10000

SQL> select dbms_metadata.get_ddl(’PROCEDURE’,'P1′) from dual;


DBMS_METADATA.GET_DDL(’PROCEDURE’,'P1′)

————————————————————————


CREATE OR REPLACE PROCEDURE “TEST”.”P1″ wrapped

a000000

354

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

7

4a 81

aVtlrmIdKjyE1rQszxgCZ9Z7+YEwg5nnm7+fMr2ywFwWfF0Jabh0OdPc4rlBP2ejNa+V+nhX

GSQhFMohoijjhhB6c3Eqd9UMXreC004MZbZOdyo7N55Mc3HYiKbboLaf

這樣,你就在資料庫中建立了一個加密原始碼的儲存過程。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-1109434/,如需轉載,請註明出處,否則將追究法律責任。

相關文章