Oracle的AES加密与解密用法
2013年12月11日 11:50:35 iteye_751 阅读数:428
--加密字符串
create or replace function des3_enc
(
input varchar2
)
return varchar2
is
i_data varchar2(128);
v_in varchar2(255);
i_key varchar2(128);
raw_input RAW(128) ;
key_input RAW(128) ;
decrypted_raw RAW(2048);
begin
--判断是否为空
if input is null then
return null;
else if input='' then
return '';
end if;
end if;

--key,至少要16位
i_key:= 'abcdef0123456789';

--要加密信息
i_data:= input;
v_in := rpad(i_data,(trunc(length(i_data)/8)+1)*8,chr(0));
--字符转成RAW
raw_input := UTL_RAW.CAST_TO_RAW(v_in);
key_input := UTL_RAW.CAST_TO_RAW(i_key);
dbms_obfuscation_toolkit.DES3Encrypt(input => raw_input,key => key_input,encrypted_data => decrypted_raw);

--加密信息转成字符
return to_char(rawtohex(decrypted_raw));

end des3_enc;

--解密字符串
create or replace function des3_dec
(
input varchar2
)
return varchar2
is
i_data varchar2(2048);
i_key varchar2(2048);
v_in varchar2(2048);
begin
--判断是否为空
if input is null then
return null;
else if input='' then
return '';
end if;
end if;

--key,至少要16位
i_key:= 'abcdef0123456789';

--要解密的信息
i_data := input;

dbms_obfuscation_toolkit.DES3DECRYPT(input_string => UTL_RAW.CAST_TO_varchar2(i_data),key_string => i_key,decrypted_string=> v_in);
v_in := rtrim(v_in,chr(0));

--返回解密信息
return v_in;

end des3_dec;

--触发器,用于在增加、修改时自动加密字段,查询时需要手动调用解密函数进行解密。
create or replace trigger enc_trigger
before insert or update on scott.dept
for each row
begin
select des3_enc(:new.dname) into :new.dname from dual;
end enc_trigger;

--使用示例:
insert into dept values (50,'test','test');
commit;
select des3_dec(dname) from dept where deptno=50;

Oracle的AES加密与解密用法的更多相关文章

  1. java与C#、.NET AES加密、解密 解决方案

      1.情景展示 Java提供的密钥,C#无法解密. 2.原因分析 在Java中,AES的实际密钥需要用到KeyGenerator 和 SecureRandom,但是C#和.NET 里面没有这2个类, ...

  2. Php AES加密、解密与Java互操作的问题

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  3. 探讨数据进行AES加密和解密以及.NET Core对加密和解密为我们提供了什么?

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  4. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  5. java独立小程序实现AES加密和解密

    一.需求: web项目中配置文件配置的密码是明文的, 现在需要修改成密文, 加密方式采用AES, 于是写了个工具类用于加密和解密. 又因为这个密码是由客户来最终确定, 所以为了部署时方便起见, 写了个 ...

  6. php的AES加密、解密类

    <?php /** * php.ios.Android 通用的AES加密.解密方法 */ namespace Common\Business; class AESCrypt { /** * 初始 ...

  7. java AES加密、解密(兼容windows和linux)

      java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...

  8. polarssl rsa & aes 加密与解密

    上周折腾加密与解密,用了openssl, crypto++, polarssl, cyassl, 说起真的让人很沮丧,只有openssl & polarssl两个库的RSA & AES ...

  9. C# AES 加密与解密

    AES 算法加密(ECB模式) 将明文加密,加密后进行base64编码,返回密文 /// <summary> /// AES 算法加密(ECB模式) 将明文加密,加密后进行base64编码 ...

随机推荐

  1. 按科室统计 2.181222版本 关联查询join 不对

    SQL: select t0.deptName, t0.deptId, t0.startTime, t0.endTime, IFNULL(t0.num,) as num0, IFNULL(t1.num ...

  2. Javaweb——————sql常用思维导图

  3. 字符设备驱动(一)---led

    一.总体架构 二.硬件电路 1.硬件原理图 2.寄存器配置 三.代码编写 写linux的设备驱动操作的是系统的虚拟地址,并不是像裸机程序一样操作的是物理地址. 物理地址要映射成虚拟地址,就要用到ior ...

  4. java实现打印前台页面

    核心:用window自带方法 window.print(); 打印的范围:body里内容,只要在页面能显示出来,都打印 遇到的问题:打印按钮被一起打印出来了,url也别打印出来了 解决办法:在触发打印 ...

  5. valgrind 开发板调试

    1.http://www.360doc.com/content/13/1205/13/7256015_334661588.shtml

  6. Nginx(二) nginx 无法启动

    有时候在客户端输入:nginx 但是终端会输出以下,显示启动失败 nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already i ...

  7. 《Java编程思想第四版》附录 B 对比 C++和 Java

    <Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...

  8. Netty实现简单UDP服务器

    本文参考<Netty权威指南> 文件列表: ├── ChineseProverbClientHandler.java ├── ChineseProverbClient.java ├── C ...

  9. 1.Python_字符串_常用办法总结

    明确:对字符串的操作方法都不会改变原来字符串的值. 1.去掉空格和特殊符号 name.strip() 去掉空格和换行符 name.strip("xx") 去掉某个字符串 name. ...

  10. Templates<2>

    Part:template specialized Part1:template specialized #include <iostream> #include <stdio.h& ...