Oracle 3DES加密示例

SET SERVEROUTPUT ON;
DECLARE
  input_string  VARCHAR2(32) := ‘12345678‘;
  ikey          INTEGER := 100001;
  input_raw     RAW(32) := UTL_RAW.CAST_TO_RAW(input_string);
  key_raw       RAW(32);
  encrypted_raw RAW(32);
  encry_key     VARCHAR2(32);
  decrypted_raw RAW(32);

BEGIN
  key_raw := utl_raw.cast_from_binary_integer(ikey) ||
             utl_raw.bit_complement(utl_raw.cast_from_binary_integer(ikey));
  key_raw := key_raw || utl_raw.bit_xor(key_raw, hextoraw(‘F0F0F0F0F0F0F0F0‘));
  dbms_output.put_line(‘> ========= Get Key Bytes =========‘);
  dbms_output.put_line(‘> Input String: ‘ || input_string);
  dbms_output.put_line(‘> Key   String: ‘ || key_raw);
  dbms_output.put_line(‘> Key   length: ‘ || UTL_RAW.length(key_raw));

  dbms_output.put_line(‘> ========= BEGIN TEST Encrypt =========‘);
  --加密
  encrypted_raw := dbms_obfuscation_toolkit.DES3Encrypt(input => input_raw,
                                                        key   => key_raw,
                                                        iv    => hextoraw(‘0000000000000000‘));
  dbms_output.put_line(‘> encrypted_raw output: ‘ || encrypted_raw);
  encry_key := utl_raw.cast_to_varchar2(utl_encode.base64_encode(encrypted_raw));
  dbms_output.put_line(‘> encry_key     output: ‘ || encry_key);

  --解密
  decrypted_raw := dbms_obfuscation_toolkit.DES3Decrypt(input => encrypted_raw,
                                                        key   => key_raw,
                                                        iv    => hextoraw(‘0000000000000000‘));
  dbms_output.put_line(‘> decrypted_raw output: ‘ || utl_raw.cast_to_varchar2(decrypted_raw));
  IF input_string = utl_raw.cast_to_varchar2(decrypted_raw) THEN
    dbms_output.put_line(‘> String DES Encyption and Decryption successful‘);
  END IF;
END;
/

显示如下:

> ========= Get Key Bytes =========
> Input String: 12345678
> Key   String: 000186A1FFFE795EF0F176510F0E89AE
> Key   length: 16
> ========= BEGIN TEST Encrypt =========
> encrypted_raw output: 9D2A9569D15A07DB
> encry_key     output: nSqVadFaB9s=
> decrypted_raw output: 12345678
> String DES Encyption and Decryption successful
PL/SQL procedure successfully completed

时间: 2024-11-08 04:17:29

Oracle 3DES加密示例的相关文章

3DES 加密 解密

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1d9421 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo } p.p4 { margin: 0.0px 0.0px 0.0px 0.

Java实现3DES加密--及ANSI X9.8 Format标准 PIN PAN获取PIN BlOCK

1, 采用银联ANSI X9.8标准 PIN xor PAN获取PIN BlOCK 2, 采用3Des进行加密 参考: des和3Des加密算法实现 要点:因为3DES是对称加密算法,key是24位,当只有16位时,后8位取key的前8位 ANSI X9.8标准 PIN xor PAN获取PIN BlOCK (1) ANSI X9.8 Format(不带主账号信息) PIN(个人识别码 Personal Identity Number)总共有8个byte长度,分为两个部分;(类似数据包的格式)

C# Java 3DES加密解密 扩展及修正\0 问题

注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ----------------------------------------------------------- /// 说明: /// 转载自网上http://bbs.csdn.net/topics/350158619 /// 并加以扩展 /// 修正: /// 1. 修改正解密后出现 '\0' /// 注: 1. 向量不能小于8位 /// 2. 明文末尾如果是带'\0'字

iOS 3DES加密解密(一行代码搞定)

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标

一个非常标准的Java连接Oracle数据库的示例代码

最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径->配置构建路径,选择第三项"库",然后点击"添加外部Jar",选择"D:\Oracle\app\oracle\product\11.2.0\server \jdbc\lib\ojdbc6_g.jar"(注:D:\Oracle为数据库的安装路径). 2.以下代码为非常标准的Oracle数据库连接代码示例: /** * 一个非常标准的连接Oracl

Oracle 存储过程加密之wrap工具

<Oracle 存储过程加密之wrap工具> 定场诗 道德三皇五帝,功名夏侯商周,五霸七雄闹春秋,顷刻兴亡过手, 青石几行名姓,北邙无数荒丘,前人播种后人收,说甚龙争虎斗. 引言:平时大家在做项目的时候,经常会遇到把Oracle存储过程带到项目现场来测试系统.这时如果想对自己的存储过程进行保密,不使别人看到源代码,就可以对已有的存储过程进行加密保护.顾名思义,就是对Oracle存储过程源码的加密.当然不是什么时候都需要的,当有的项目对安全性要求比较高的时候可以采用,下面我就用案例来介绍这种加密

C语言单片和C#语言服务器端DES及3DES加密的实现

原文:C语言单片和C#语言服务器端DES及3DES加密的实现 公司最近在做单片机和C#语言的通信.用的是Socket通信.传输的数据是明文,后来 在会上讨论准备用DES加密(对称加密)来做. 双方约定 相应的“密钥”. 以前做的加密一般都是用C#加密和C#解密.一直以为是个简单的问题,现在和用C写的单片机通信的时候却出了问题. 问题是什么呢? 我找了几个在线加密 解密的网站,还下了几个加密解密的工具.结果相同的数据,用相同的密钥却得到不同的结果. 而且现在网上C语言实现的DES资料基本上是不靠谱

iOS POS之3DES加密

最近在做支付类APP,遇到了很多以前没遇到过的东西.接下来我会用这系列文章来记录我所遇到的问题. 首先就是在组8583报文时用到的3DES加密.8583报文是以字节为单位的所以可能3DES加密会有稍许不同. 我自己搞这个问题也搞了两天,最后还是拜托一个高手给搞定的. 我在网上也搜了很多资料最后发现有一帖子很接近答案.链接如下: http://www.cocoachina.com/bbs/read.php?tid=245410 请教高手所做的就是把哈希那句给去掉然后稍微做下处理,有兴趣的同学可以自

简进祥==iOS 3DES加密解密

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标