plsql 代码加密详解(wrap)

本文介绍如何使用Oracle提供的命令对PL/SQL代码进行加密,包括具体的命令语法及操作步骤,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 概述

1. 加密:隐藏 pl/sql 关键代码
   
2. 注意
   (1) 加密后,默认的文件类型 '.plb'
   (2) pl/sql 没有提供解密工具(百度上有 ←_←)

效果展示:
在这里插入图片描述

2 加密

语法:

-- 在装 Oracle 的机器上用命令行输入
-- "=" 两边不要留空格
wrap iname=原文件 [oname=目标文件]

> wrap iname=d:\test.sql oname=d:\new_test.sql;

示例:加密 D:\加密测试 目录下的 sql 文件

快捷键:win + r,输入 cmd 进入 windows 命令窗口

C:\>D: -- 进入盘符 'D'

D:\>cd D:\加密测试 -- 进入对应的目录

D:\加密测试>wrap iname=01_pkg_head.sql
D:\加密测试>wrap iname=02_pkg_body.sql oname=02_pkg_body_wrap.sql

测试结果:
在这里插入图片描述

文件路径:
在这里插入图片描述

3 源码

包头,路径:D:\加密测试\01_pkg_head.sql

CREATE OR REPLACE PACKAGE scott.pkg_public_toolkit IS
  PROCEDURE p_division_operation(i_num1    IN NUMBER,
                                 i_num2    IN NUMBER,
                                 o_result  OUT NUMBER,
                                 o_flag    OUT VARCHAR2,
                                 o_message OUT VARCHAR2);

  FUNCTION f_division_operation(i_num1 IN NUMBER,
                                i_num2 IN NUMBER) RETURN NUMBER;
END pkg_public_toolkit;
/

包体,路径:D:\加密测试\02_pkg_body.sql

CREATE OR REPLACE PACKAGE BODY scott.pkg_public_toolkit IS
  -- ******************************************************
  -- 功能简述:计算两个数的除法,并返回
  -- 参数说明:i_num1、i_num2 要运算的两个值
  --         o_result       运算返回的结果
  --         o_flag         程序执行标志(0:成功,1:失败)
  --         o_message      程序执行信息
  -- ******************************************************
  PROCEDURE p_division_operation(i_num1    IN NUMBER,
                                 i_num2    IN NUMBER,
                                 o_result  OUT NUMBER,
                                 o_flag    OUT VARCHAR2,
                                 o_message OUT VARCHAR2) IS
  BEGIN
    o_flag    := '0';
    o_message := '程序执行成功';
  
    -- 除法运算规则
    o_result := i_num1 / i_num2;
  
  EXCEPTION
    WHEN OTHERS THEN
      o_flag    := '1';
      o_message := '程序执行失败';
    
      IF i_num2 = 0 THEN
        raise_application_error(-20001, '除数不能为 0 ,i_num2 = 0');
      END IF;
  END p_division_operation;

  -- ******************************************************
  -- 功能简述:计算两个数的除法,并返回
  -- 参数说明:i_num1、i_num2 要运算的两个值
  -- ******************************************************
  FUNCTION f_division_operation(i_num1 IN NUMBER,
                                i_num2 IN NUMBER) RETURN NUMBER IS
    o_result  NUMBER(10, 2);
    o_flag    VARCHAR2(2);
    o_message VARCHAR2(100);
  BEGIN
    p_division_operation(i_num1    => i_num1,
                         i_num2    => i_num2,
                         o_result  => o_result,
                         o_flag    => o_flag,
                         o_message => o_message);
  
    RETURN o_result;
  END f_division_operation;
END pkg_public_toolkit;
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼丸丶粗面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值