oracle 9i 使用dbms_obfuscation_toolkit加密解密

ops/2024/11/8 12:11:27/

加密(encrypt)解密(decrypt)采用 Oracle DBMS_OBFUSCATION_TOOLKIT package.

利用这个包,我们可以对数据进行DES,Triple DES或者MD5加密.

DESGETKEY   --产生密钥,用于DES算法
   DES3GETKEY  -- 产生密钥,用于Triple DES算法
   DESENCRYPT  -- DES算法加密数据
   DESDECRYPT  -- DES算法解密数据
   DES3ENCRYPT -- Triple DES算法加密数据
   DES3DECRYPT -- DES算法解密数据
   MD5         -- MD5算法加密数据

使用DES算法和Triple DES算法的特征之一. 是输入长度必须是8的倍数,而输出也是8的倍数,所以我们的字段长度也是8的倍数.如果输入不是8的倍数,会报错.

The key specified is too short for the algorithm. DES requires a key of at least 8 bytes. Triple DES requires a key of least 16 bytes in two-key mode and 24 bytes in three-key mode.

也可以使用DESGETKEY获取Key

PROCEDURE DESGETKEY
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
 SEED                           RAW                     IN
 KEY                            RAW                     OUT

create or replace package PG_ENCRYPT_DECRYPT is
  function getkey return varchar2;
  function encrypt(p_in varchar2) return varchar2;
  function decrypt(p_in varchar2) return varchar2;
end;

create or replace package body PG_ENCRYPT_DECRYPT is
  function getkey return varchar2 is
    v_type varchar2(1) := '';
    v_rtn  varchar2(40);
    v_key  varchar2(20) := 'AAAA1234';
  begin
    if (v_type = '1') then
      select to_char(sysdate, 'yyyy') into v_key from dual;
    elsif (v_type = '2') then
      select to_char(sysdate, 'yyyyQ') into v_key from dual;
    elsif (v_type = '3') then
      select to_char(sysdate, 'yyyymm') into v_key from dual;
    elsif (v_type = '4') then
      select to_char(sysdate, 'yyyyWW') into v_key from dual;
    elsif (v_type = '5') then
      select to_char(sysdate, 'yyyymmdd') into v_key from dual;
    end if;
    for i in 1 .. length(v_key) loop
      v_rtn := v_rtn || to_char(ascii(substr(v_key, i, 1)));
    end loop;
    return v_rtn;
  end;
  /* Creating function DECRYPT*/
  function encrypt(p_in varchar2) return varchar2 is
    v_in  varchar2(320);
    v_out varchar2(1000);
  begin
    v_in  := rpad(p_in, (trunc(length(p_in) / 8) + 1) * 16, chr(0));
    v_out := UTL_RAW.CAST_TO_RAW(dbms_obfuscation_toolkit.desencrypt(input_string => v_in,
                                                                     key_string   => getkey()));
    return v_out;
  end;
  /*Creating function ENCRYPT*/
  function decrypt(p_in varchar2) return varchar2 is
    v_out varchar2(1000);
  begin
    dbms_obfuscation_toolkit.DESDECRYPT(input_string     => UTL_RAW.CAST_TO_varchar2(p_in),
                                        key_string       => getkey(),
                                        decrypted_string => v_out);
    v_out := rtrim(v_out, chr(0));
    return v_out;
  end;

end;


http://www.ppmy.cn/ops/131924.html

相关文章

SpringBoot中的注解详解(二)

四、Param() (mapper包 Dao层) Param(): 功能: 用于在Mapper接口的方法参数上标记参数名称,以便在SQL语句中引用这些参数。 参数命名:在Mapper接口的方法参数上使用Param注解,可以为参数指定一…

基于SpringBoot的速食零食商城+LW示例参考

1.项目介绍 功能模块:管理端(用户管理、账号管理、商品分类管理、商品信息管理、订单管理等),用户端(商品信息、登录注册、我的订单等)技术栈:SpringBoot,thymeleaf,MyB…

15分钟学 Go 第 34 天:依赖管理——Go Modules

第34天:依赖管理——Go Modules 目标:学习和掌握Go语言中的依赖管理工具“Go Modules”,理解如何使用Go Modules进行依赖管理。 一、Go Modules 简介 Go Modules 是 Go 语言官方推出的依赖管理工具,旨在解决 Go 语言项目中的依赖…

JavaWeb--Maven

1.初始Maven 1.1介绍 Maven 是一款用于管理和构建Java项目的工具,是Apache旗下的一个开源项目 。 1.2Maven的作用 2.Maven概述 2.1Maven介绍 Apache Maven是一个项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念&am…

Next.js 版本从 15 降级至 14 的操作指南

清除node_modules文件夹:为确保安装环境的整洁性,请先删除node_modules文件夹。 更新package.json文件:在package.json中,将react、react-dom和next的版本号分别修改为18.xx、18.xx(注意:react-dom的版本通…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31目录1. Large Language Models for Manufacturing摘要创新点算法模型实验效果(包含重要数据与结论)推荐…

【学术精选】SCI期刊《Electronics》特刊“New Challenges in Remote Sensing Image Processing“

英文名称:New Challenges in Remote Sensing Image Processing 中文名称:"遥感图像处理的新挑战"特刊 期刊介绍 “New Challenges in Remote Sensing Image Processing”特刊隶属于《Electronics》期刊,聚焦遥感图像处理领域快速…

C#-运算符重载

关键词:operator 语法: public static void operator 运算符(参数列表){} 作用:让自定义类或结构体对象,可以使用运算符进行运算 注意: 参数的数量:与所重载的运算符的运算规则有关。如加法只能有2个参数…