Oracle中的MD5加密

作者:iamlaosong

因为要用到MD5加密,所以在网上搜了一下相关资料,并进行仔细研究。其核心就是MD5编码的数据包函数:DBMS_OBFUSCATION_TOOLKIT.MD5,这里涉及到RAW类型,其实就是原始的代码值。

MD5加密的结果就是16个byte值,也就是是RAW类型,是显示不出来的,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换,这个函数的作用是将每个字节的ASCII码值用字符表示出来。为了说明清楚,举例如下:假定一个字节的二进制值是0100
0001,十六进制表示就是41,这个值实际上就是字母“A”的ASCII代码值,那么经过Utl_Raw.Cast_To_Raw转换后就变成了字符串“41”。

Utl_Raw.Cast_To_Raw函数也可以转换字符串,也就是将字符串的代码值(应该是oracle字符集内码)以十六进制表示出来,例如:

utl_raw.cast_to_raw(‘iamlaosong‘)的结果是:69616D6C616F736F6E67

utl_raw.cast_to_raw(‘我是老宋‘)的结果是:CED2CAC7C0CFCBCE

MD5包函数的使用方法如下:

1、直接调用

declare

v2 varchar2(32);

begin

v2 := Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => ‘123456‘));

dbms_output.put_line(v2);

end;

显示结果:E10ADC3949BA59ABBE56E057F20F883E

这个字符串实际上是16个字节的值用十六进制表示的结果,其中的字符是0-9和A-F,正因为如此,其中的字母大小写是无关的,都表示同一个值。

再举个例子,字符串:iamlaosong,加密后显示的结果:7E0FB497D8C4515157DDEAFC2E511290,很显然,也是16个字节的十六进制表示。

至于加密结果的比较,还是转换成字符串后较为直观,比较起来也方便一些。

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

时间: 2024-11-08 19:58:30

Oracle中的MD5加密的相关文章

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返回的字

Oracle中对列加密的方法

Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col(id int,txt varchar2(100) encrypt using '算法名称' identified by '密钥' no salt);优点:对应用完全透明缺点:需要数据库管理员管理wallet,增加了管理复杂性,也无法避免数据库管理员查看原文. 2,使用DBMS_CRYPTO包优点:

java中使用MD5加密的算法

MD5,全名Message Digest Algorithm 5,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.以下是JAVA语言中使用MD5加密的工具类. import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { /** * 对字符串进行MD5摘要加密,返回结果与MySQL的MD5函数一致 *

IOS中把字符串加密/IOS中怎么样MD5加密/IOS中NSString分类的实现

看完过后,你会学到: 1学习IOS开发中的分类实现, 2以及类方法的书写, 3以及字符串的MD5加密/解密. ---------------------------wolfhous------------------ [1]新建工程,新建分类 [2]分类的命名方式以及类的选择 [3]书写NSString分类的类方法,以及实现类方法,以及MD5如何加密 [4]测试加密结果 [5]解密:直接百度MD5解密,随便点歌网站进去,输入解密KEY,在我这个Demo中, wolfhous正常加密44bf025

JAVA中使用MD5加密工具类实现对数据的加密处理

1.MD5工具类 package com.ssm.util; import java.security.MessageDigest; public class MD5Util { //将字节数组转成十六进制字符串 private static String byteArrayToHexString(byte b[]) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i++) resultSb.

LoadRunner 中实现MD5加密

最近在用loadrunner做一个压力测试,在编写脚本的时候发现传递参数的时候需要一个sign值,这个值是将参数进行MD5加密生成的,所以下面就说一说怎么对参数进行MD5加密. 1.首先我们需要一个加密算法的文件叫做:md5.h文件 我们可以新建一个md5.h文件,至于里面具体的算法网上都有下载,具体如下(直接将下面的算法拷贝到md5.h文件中): #ifndef MD5_H#define MD5_H#ifdef __alphatypedef unsigned int uint32;#elset

linux数据库中使用MD5加密

MD5加密算法源码下载:https://pan.baidu.com/s/1nwyN0xV 下载完成了之后解压,得到两个文件 环境搭建: 1.把md5.h文件拷贝到/usr/include/目录下 sudo cp md5.h /usr/include 2.编译生成.o文件 gcc -fPIC -o md5.o -c md5.c -lpthread -ldl 3.编译生成.so文件 gcc -shared -fPIC -o libmd5.so md5.o -lpthread -ldl 4.把生成的.

asp.net中实现MD5加密、解密的方法

这个MD5加密.解密的方法会使用即可. 使用时的代码备忘:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("要加密的字符串", "MD5")); 以下是加密.解密的代码部分: /*用法 protected void Page_Load(object sender, EventArgs e) { //加密 this.Title = CEncrypt.DesEncrypt(&qu

iOS 中使用md5加密

#import <CommonCrypto/CommonDigest.h> @implementation MD5Util +(NSString *)encode:(NSString *)value{ [value retain]; const char *cStr = [value UTF8String]; [value release]; unsigned char result[16]; CC_MD5( cStr, strlen(cStr), result ); // This is t