Oracle中的MD5加密详解
一、技术点
1、 DBMS_OBFUSCATION_TOOLKIT.MD5
DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于SELECT语句。
2、Utl_Raw.Cast_To_Raw
DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换
二、应用
1、直接调用
declare
v2 varchar2(32); begin
v2 := Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => '111'));
dbms_output.put_line(v2); end;
注意:可以在存储过程中直接调用,如果要嵌套调用md5时,记得每次调用后都用Utl_Raw.Cast_To_Raw进行转换,否则最后出来的结果是错误的。
2、构造函数后,再调用
CREATE OR REPLACE FUNCTION MD5(
passwd IN VARCHAR2) RETURN VARCHAR2 IS
retval varchar2(32); BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)); RETURN retval; END;
调用md5函数示例:
select md5(1) from dual
另附:Oracle中MD5函数语句
--Oracle中MD5函数语句
create or replace FUNCTION "MD5HASH" (str IN VARCHAR2)
RETURN VARCHAR2
IS v_checksum VARCHAR2(32);
BEGIN
v_checksum := LOWER( RAWTOHEX( UTL_RAW.CAST_TO_RAW( sys.dbms_obfuscation_toolkit.md5(input_string => str) ) ) );
RETURN v_checksum;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise RAISE;
END md5hash;
相关推荐
-
Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享
MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请参考 维基百科:MD5 MD5加密后是一个字节数组, 但我们一般是取其十六进制的字符串表示法,当然,十六进制数字符串是区分大小写,在 mysql数据库,Java,和JavaScript语言中,一般是使用小写的字符串来表示, 而在 Oracle数据库官方提供的包中,返回的是大写字符串,这算是一个坑,如果你想要执行多次 md5,可能需要转换为小写. 相关的代码如下: 1. Java版MD5 MD5Uti
-
Oracle定义DES加密解密及MD5加密函数示例
(1)DES加密函数 create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is v_text varchar2(4000); v_enc varchar2(4000); raw_input RAW(128) ; key_input RAW(128) ; decrypted_raw RAW(2048); begin v_text := rpad( p_text, (trunc
-
oracle下加密存储过程的方法
方法1: X:\oracle\ora81\bin\wrap iname=XXX oname=XXX 方法2:9i在win2000下使用wrap加密存储过程,10g可以用加密包dbms_ddl.wrap或dbms_ddl.create_wrapped. 11.5.1 在win2000下使用wrap加密存储过程 wrap.bat rem 使用方法:wrap 待加密的文件名 set NLS_LANG=AMERICAN_AMERICA.USACII7 wrap.exe iname=%1 paus
-
Oracle 存储过程加密方法
软件环境: 1.操作系统:Windows 2000 Server 2.数 据 库:Oracle 8i R2 (8.1.7) for NT 企业版 3.安装路径:C:ORACLE 实现方法: 1. D:>set NLS_LANG=AMERICAN_AMERICA.USACII7 或 D:>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 D:>set 直接打set命令可以查看环境变量 2. 在D:下创建a.sql文件,内容如下: create or re
-
oracle 存储过程加密的方法
配置环境: 1.数 据 库:Oracle 8i R2 (8.1.7) for NT 企业版 2.安装路径:C:ORACLE 实现方法: 1.D:>set NLS_LANG=AMERICAN_AMERICA.USACII7 或 D:>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 D:>set 直接打set命令可以查看环境变量 2.在D:下创建a.sql文件,内容如下: Java代码 create or replace procedure test1(
-
Oracle数据加密方法分析
本文实例讲述了Oracle数据加密方法.分享给大家供大家参考,具体如下: 使用MD5编码实现数据库用户密码字段的加密 一.前言 众所周知,MD5是目前应用最多的密码保护方法,该编码传说为不可逆加密编码(也就是说,永运无法倒算原码). 使用MD5加密用户的操作密码,可以有效防止系统维护人员直接进入数据库时出现系统安全漏洞(直接使用SELECT语句查询,将用户密码字段只能看到乱码,或者"****") 这里针对密码字段加密,作一实例,希望能给大家系统建设过程带来帮助. 二.技术点 1. DB
-
Oracle中的MD5加密详解
一.技术点 1. DBMS_OBFUSCATION_TOOLKIT.MD5 DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于SELECT语句. 2.Utl_Raw.Cast_To_Raw DBMS_OBFUSCATION_TOOLKIT.MD5返回的字
-
Java中的对称加密详解
目录 常见的对称加密方法 代码案例 byte[] 和16进制字符串相互转换 DES 加密和解密 AES 加密和解密 加密模式 填充模式 使用加密模式和填充模式的案例 总结 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 常见的对称加密方法 DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政
-
iOS中使用RSA加密详解
在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于解密. 首先需要先生成这些文件,然后再将文件导入工程使用,不多说,开始做! 一.使用openssl生成所需秘钥文件 生成环境是在mac系统下,使用openssl进行生成,首先打开终端,按下面这些步骤依次来做: 1. 生成模长为1024bit的私钥文件private_key.pem openssl g
-
oracle中sql 正则写法详解
目录 在Oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配 Oracle 11g及以上版本 是否走索引 Oracle中使用正则表达式需先使用REGEXP_LIKE函数来匹配字符串.正则表达式的语法与一般正则表达式相似,但具体的写法也受不同版本的Oracle环境不同. 在Oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配 如: ^:匹配字符串的开始位置:$:匹配字符串的结束位置:.:匹配任何单个字符:[ ]:匹配指定集合内的任何字符,如[abc]匹配a.b.
-
ORACLE中的的HINT详解
hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划.我们可以用hints来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是all_rows还是first_rows. 3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid. 4) 表之间的连接类型 5) 表之间的连接顺序 6) 语句的并行程度 2.HINT可以基于以下规则产生作用 表连接的顺序.表连接的方法.访问路径.并行度 3.HINT应用范围 dml语句 查询语
-
Oracle中的序列SEQUENCE详解
一.序列介绍 Oracle的序列是一种数据库对象,主要作用是用来产生唯一值.序列被创建以后可以通过数据字典找到序列对象,因此序列可以被多个对象共享. 二.创建序列 序列使用CREATE SEQUENCE语法进行创建: CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE
-
oracle中distinct的用法详解
下面先来看看例子: table表 字段1 字段2 id name 1 a 2 b 3 c 4 c 5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录. select distinct name from table 得到的结果
-
数据库账号密码加密详解及实例
数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的.如下: <authentication-manager> <authentication-provider user-service-ref="userDetailService"> <password
-
基于hashlib模块--加密(详解)
用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import hashlib m = hashlib.md5() m.update(b"hello") print(m.hexdigest()) m.update(b"It's me") print(m.hexdigest()) m.update(b"It's been a long time sin
-
Oracle分页查询的实例详解
Oracle分页查询的实例详解 1.Oracle分页查询: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM tab) A WHERE ROWNUM <= 40 ) WHERE RN >= 21; 这个分页比下面的执行时间少,效率高. 2. select * from (select c.*,rownum rn from tab c) where rn between 21 and 40 对比这两种写法,绝大多数的情况下,第一个
随机推荐
- Go语言创建、初始化数组的常见方式汇总
- C# WPF ListView控件的实例详解
- C语言中二维数组指针的简要说明
- 用python实现的去除win下文本文件头部BOM的代码
- php 中序列化和json使用介绍
- C++实现翻转单词顺序
- 浅析mysql索引
- Javascript 多浏览器兼容性问题及解决方案
- php自定义apk安装包实例
- iexplore.exe专杀手工解决
- Jquery封装tab自动切换效果的具体实现
- Javascript中arguments用法实例分析
- javascript使用Dom改变超链接前面文本框的值
- innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
- 输入自动提示搜索提示功能的javascript:sugggestion.js
- 详解Servlet3.0新特性(从注解配置到websocket编程)
- android ListView自动滚动方法
- Python 文件操作实现代码
- Centos7 安装Nginx整合Lua的示例代码
- iOS使用UICollectionView实现列表头部拉伸效果