网上随便搜搜
http://www.dbonline.cn/source/oracle/20031217/PLSQL_how%20to%20encrypt%20memory%20course.html

解决方案 »

  1.   

    使用wrapwrap iname = yoursql.sql oname = yourname.plb
      

  2.   

    就是把存储过程代码拷贝到一个sql文件中假如有一个sql 文件,叫aa.sql在sqlplus中
             wrap iname=aa.sql oname = aa.plb
    然后再   @aa.plb
    你最好保留你的原文件,因为你无法从加密后的代码恢复回来。
    加密后想要修改是很困难的。
      

  3.   

    如何加密Oracle中的存储过程 
    一、dos下
    1、准备工作
    C:>set NLS_LANG=us
    在c:下创建wl.sql文件,内容如下: 
    create or replace procedure wl
    (execlog VARCHAR2)
    AS
    v_sql VARCHAR2(2000);
    v_cnt INTEGER;
    BEGIN
        v_sql:='SELECT count(1)
                FROM USER_ALL_TABLES
                WHERE table_name=''EXECLOG''';
        EXECUTE IMMEDIATE v_sql INTO v_cnt;
        IF v_cnt=0 THEN
        v_sql:='CREATE TABLE execlog(execdate date,execlog varchar2(255))';
        EXECUTE IMMEDIATE v_sql;
        END IF;
        v_sql:='INSERT INTO execlog values(Sysdate,'''||execlog||''')';
        EXECUTE IMMEDIATE v_sql;
    END;
    2、加密
    C:>wrap iname=wl.sql
    3、恢复环境
    C:>C:>set NLS_LANG=二、sql下看看效果
    SQL> execute wl('1 live you ');
      

  4.   

    create or replace function DESencryptForMdn(
           p_input_string varchar2,
           p_key_string varchar2)  return varchar2 is 
           Result varchar2(32) ;
       v_newstring varchar2(60);
       raw_input           RAW(128) := UTL_RAW.CAST_TO_RAW(p_input_string);
       raw_key             RAW(128) := UTL_RAW.CAST_TO_RAW(p_key_string);
       encrypted_raw               RAW(2048);
       error_in_input_buffer_length EXCEPTION;
        double_encrypt_not_permitted EXCEPTION;
    begin   
      
        dbms_obfuscation_toolkit.DESEncrypt(input => raw_input, 
                   key => raw_key, encrypted_data => encrypted_raw );
        
        v_newstring := rawtohex(encrypted_raw);    
        insert into TEST_TABLE values (encrypted_raw) ; 
        dbms_output.put_line(v_newstring );
        result :=v_newstring;
        return(Result);
    end DESencryptForMdn;