在oracle中如何加密自己写的存储过程? 网上随便搜搜http://www.dbonline.cn/source/oracle/20031217/PLSQL_how%20to%20encrypt%20memory%20course.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用wrapwrap iname = yoursql.sql oname = yourname.plb 就是把存储过程代码拷贝到一个sql文件中假如有一个sql 文件,叫aa.sql在sqlplus中 wrap iname=aa.sql oname = aa.plb然后再 @aa.plb你最好保留你的原文件,因为你无法从加密后的代码恢复回来。加密后想要修改是很困难的。 如何加密Oracle中的存储过程 一、dos下1、准备工作C:>set NLS_LANG=us在c:下创建wl.sql文件,内容如下: create or replace procedure wl(execlog VARCHAR2)ASv_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.sql3、恢复环境C:>C:>set NLS_LANG=二、sql下看看效果SQL> execute wl('1 live you '); 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; 在java获取存储过程的返回值 菜鸟问个oracle 10G的enterprise manager添加数据库怎么添加呢? ORACLE安装错误 rman异机恢复是否可行 关于ODBC的,我想在其他机器上运行我的应用程序,但是数据源不知道如何设置? 紧急,求助一个简单的语句!!!!!!!!! 如何实现开发过程中的版本控制? 请教一个项目开发中遇到的问题! 同样的sql语句,为什么执行结果不一样? 如何设置游标数 紧急求助高手帮助1031 oralce 中,应用程序发出的 sql 语句可以加密吗?
wrap iname=aa.sql oname = aa.plb
然后再 @aa.plb
你最好保留你的原文件,因为你无法从加密后的代码恢复回来。
加密后想要修改是很困难的。
一、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 ');
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;