1、概述

作用:用于加密和解密应用数据,另外还可以生成密码检验和.通过加密输入数据,可以防止黑客或其他用户窃取私有数据;而通过结合使用加密和密码检验和,可以防止黑客破坏初加密的数据.
当使用该包加密数据时,要求被加密数据的长度必须为8字节的整数倍.当使用DES算法加密数据时,密钥长度不能低于8字节;当使用DES3算法加密数据时,密钥长度不能低于16字节.

2、包的组成

1)、DESencrypt
作用:用于使用DES算法对输入数据进行加密,并生成加密格式的数据。密钥长度不能低于8字节且输入数据必须是8字节的整数倍。
语法1:dbms_obfuscation_toolkit.DESencrypt(input raw,key raw,encrypted_date out raw);
语法2:dbms_obfuscation_toolkit.DESencrypt(ipput_string varchar2,key_string varchar2,encrypted_string out varchar2);
其中input\input_string指定输入的二进制数据或输入字符串,key\key_string指定加密密钥,encrypted_date\encrypted_string指定存放加密结果的字符串。

2)、DESdecrypt
作用:用于对使用DES算法所生成的加密数据进行解密。当对数据进行
解密时,解密密钥必须要与加密密钥完全一致。
语法1:dbms_obfuscation_toolkit.desdecrypt(input raw,key raw,decrypted_data out raw);
语法2:dbms_obfuscation_toolkit.desdecrypt(input_string varchar2,key_string varchar2,decrypted_string out varchar2);
其中decrypted_data\decrypted_string指定存放解密结果的字符串。

3)、DES3encrypt
作用:用于使用DES3算法对输入数据进行加密,并生成加密格式的数据。密钥不能少于16个字符并且数据数据必须是8字节的整数倍。
语法1:dbms_obfuscation_toolkit.DES3encrypt(input raw,key raw,encrypted_data out raw);
语法2:dbms_obfuscation_toolkit.DES3encrypt(input_string varchar2,key_string varchar2,encrypted_string out varchar2);

4)、DES3decrypt
作用:用于对使用DES3算法所生成的加密数据进行解密。解密密钥必须要与加密密钥完全一致。
语法1:dbms_obfuscation_toolkit.DES3decrypt(input raw,key raw,decrypted_data out raw);
语法2:dbms_obfuscation_toolkit.DES3decrypt(input_string varchar2,key_string varchar2,encrypted_string out varchar2);

5)、md5
作用:用于使用md5算法生成密码校验码。可以防止其他用户破坏被传输的加密数据。
语法1:dbms_obfuscation_toolkit.md5(input raw,checksum out raw);
语法2:dbms_obfuscation_toolkit.md5(input_string varchar2,checksum_string out varchar2);
其中checksum_string(checksum)指定存放密码校验码的字符串。

3、综合例子

1)、简单例子

declare
encrypted_string varchar2(100);
decrypted_string varchar2(100);
str1 varchar2(8):='中国你好';
key varchar2(16):='ABCDFDSDSASS$1234';
str2 varchar2(100);
str3 varchar2(100);
begin
--DESencrypt
dbms_obfuscation_toolkit.DESencrypt(input_string=>'SCOTTsco',key_string=>'abcd1234',encrypted_string=>encrypted_string);
dbms_output.put_line(encrypted_string);
--DESdecrypt
dbms_obfuscation_toolkit.DESdecrypt(input_string=>encrypted_string,key_string=>'abcd1234',decrypted_string=>decrypted_string);
dbms_output.put_line(decrypted_string);
--DES3encrypt
dbms_obfuscation_toolkit.DES3encrypt(input_string=>str1,
key_string=>key,encrypted_string=>str2);
dbms_output.put_line(str2);
--DES3decrypt
dbms_obfuscation_toolkit.DES3encrypt(input_string=>str2,
key_string=>key,decrypted_string=>str3);
dbms_output.put_line(str3);
--md5
dbms_obfuscation_toolkit.md5(input_string=>str1,checksum_string=>str2);
dbms_output.put_line(str2);
end;

2)、例子2
说明:为了防止黑客窃取数据,应该对数据进行加密,为防止黑客窜改数据,应该使用密码校验来确保数据的正确性。
下面使用管道发送加密信息并确保消息正确性
(1)、建立过程send_message
说明:用于生产消息的密码校验码、加密信息,并分别发到不同的管道。

create or replace procedure send_message(message varchar2) is
flag int;
checksum varchar2(100);
key varchar2(100);
encry_str varchar2(100);
begin
dbms_obfuscation_toolkit.md5(input_string=>message,checksum_string=>checksum);--用MD5为消息生产密码校验码
flag:=dbmspipe.create_pipe('checksum');--建立checksum管道
if flag=0 then
dbms_pipe.pack_message(checksum);
flag:=dbms_pipe.send_message('checksum');--发送校验码
end if;
dbms_obfuscation_toolkit.desencrypt(input_string=>message,key_string=>key,encrypted_string=>encry_str);--加密要发送的消息。
flag:=dbms_pipe.create_pipe('encrypt');--建立encrypt管道
if flag=0 then
dbms_pipe.pack_message(encrypt);
flag:=dbms_pipe.send_message('encrypt');--发送信息
end if;
end;

(2)、建立过程receive_message
说明:用于接收校验码和消息

create or replace procedure receive_message is
flag int;
source_checksum varchar2(100);
dest_checksum varchar2(100);
key varchar2(100):='123456778SAD';
encry_str varchar2(100);
decry_str varchar2(100);
begin
flag:=dbms_pipe.receive_message('encrypt');--接收加密消息
if flag=0 then
dbms_pipe.unpack_message(encry_str);
flag:=dbms_pipe.remove_pipe('encrypt');
end if;
flag:=dbms_pipe.receive_message('checksum');--接收加密消息
if flag=0 then
dbms_pipe.unpack_message(source_checksum);
flag:=dbms_pipe.remove_pipe('checksum');
end if;
dbms_obfuscation_toolkit.desdecrypt(input_string=>encry_str,
key_string=>key,decrypted_string=>decry_str);--使用密钥解密信息
dbms_obfuscation_toolkit.md5(input_string=>decry_str,checksum_string=>dest_checksum);--生产密码校验码
if trim(source_checksum)=trim(dest_checksum) then
dbms_output.put_line(decry_str);
else
dbms_output.put_line('消息被窜改');
end if;
end;

(3)、使用
会话1:exec send_message('中国你好');
会话2:exec scott.receive_message;

十四、dbms_obfuscation_toolkit(用于加密和解密应用数据)的更多相关文章

  1. ADO.NET 快速入门(十四):使用 SQL Server 检索数据

    SqlDataReader 类提供了一种从数据源读取数据记录只进流的方法.如果想使用 OLE DB 接口的数据库或者 SQL Server7.0 之前的版本,请参考文章:使用 OLE DB 检索数据. ...

  2. 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件

    jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...

  3. JavaWeb学习笔记(十四)—— 使用JDBC处理MySQL大数据

    一.什么是大数据 所谓大数据,就是大的字节数据,或大的字符数据.大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据 ...

  4. Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类

    一.String类 1.创建字符串对象 创建字符串对象有两种方法:直接用“=”或者使用“new String(...)” String aStr = "TMZ"; String b ...

  5. (十四)整合 ClickHouse数据库,实现数据高性能查询分析

    整合 ClickHouse数据库,实现数据高性能查询分析 1.ClickHouse简介 1.1 数据分析能力 2.SpringBoot整个ClickHouse 2.1 核心依赖 2.2 配属数据源 2 ...

  6. Python 编程快速上手 第十四章 处理 CSV 文件和 JSON 数据

    前言 这一章分为两个部分,处理 CSV 格式的数据和处理 JSON 格式个数据. 处理 CSV 理解 csv csv 的每一行代表了电子表格中的每一行,每个逗号分开两个单元格csv 的内容全部为文本, ...

  7. 第十四节:Web爬虫之Ajax数据爬取

    有时候在爬取数据的时候我们需要手动向上滑一下,网页才加载一定量的数据,但是网页的url并没有发生变化,这时我们就要考虑使用ajax进行数据爬取了...

  8. 第四十四篇 入门机器学习——matplotlib基础——实现数据可视化

    No.1. 绘制一条正弦曲线 No.2. 在一张图中绘制多条曲线 No.3. 可以为曲线指定颜色.线条样式 No.4. 可以指定横纵坐标轴的范围 也可以使用: No.6. 可以为每条曲线添加图示 No ...

  9. vue学习(十四) 条件搜索框动态查询表中数据 数组的新方法

    //html <div id="app"> <label> 名称搜索关键字: <input type="text" clasa=& ...

随机推荐

  1. 金融即服务(FaaS),将开启场景化金融新格局

    转自: https://www.iyiou.com/p/28494/fs/1 [ 亿欧导读 ] 金融即服务揭示了场景金融的实现路径,通过双向连接做一个开放的系统,按需给客户提供金融服务. 本文系作者在 ...

  2. JMeter的安装和目录解析

    Ubuntu系统中jmeter的安装和目录解析 作为一个Linux新手,在使用jdk时,或许会安装配置多次仍然导致无法使用情况(如无法登录系统等),请按如下步骤一步一步安装并配置 相关软件下载地址 J ...

  3. js正则匹配两位小数

    今天写一个用js正则校验最多保留两位小数的格式. a = /^\d+|\d+\.\d{1,2}$/; 测试 a.test(1.222); 结果:true 一下蒙了,怎么可能,最后找了好久,原来需要把^ ...

  4. CSS3 简介

    CSS3 简介 对CSS3已完全向后兼容,所以你就不必改变现有的设计.浏览器将永远支持CSS2. CSS3被拆分为"模块".旧规范已拆分成小块,还增加了新的. 一些最重要CSS3模 ...

  5. 20145328 《Java程序设计》第5周学习总结

    20145328 <Java程序设计>第5周学习总结 教材学习内容总结 语法和继承架构 异常处理关键字 第八章内容主要是对Java的异常处理 Java的异常处理是通过5个关键字来实现的:t ...

  6. 20145331 《Java程序设计》第4周学习总结

    20145331 <Java程序设计>第4周学习总结 教材学习内容总结 •第六章 1.继承的定义与特点: 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法, ...

  7. 地址之间的复制,memcpy函数

    #include <stdio.h> #include <stdlib.h>   int main(int argc, char *argv[]) {     char a[3 ...

  8. Spring容器基础xmlbeanfactory(一起看源码)

    在spring中,如果你想创建容器少不了使用常见的xmlbeanfactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationConte ...

  9. ASP.NET.Identity 加密算法

    public static string HashPassword(string password) { if (password == null) { throw new ArgumentNullE ...

  10. 01_zookeeper简介(刷新)

    1. 分布式系统及其问题 zookeeper是帮助我们构建分布式系统的一个软件(协调员的角色)首先,我们要明白分布式系统以及它的问题,之后才能理解为什么有zookeeper 1.1 分布式系统 分布式 ...