Oracle中的MD5加密详解

2019-12-17

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返回的字串,是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;

 

《Oracle中的MD5加密详解.doc》

下载本文的Word格式文档,以方便收藏与打印。

  • MySQL使用物理方式快速恢复单表
    MySQL使用物理方式快速恢复单表

    这篇文章主要介绍了MySQL使用物理方式快速恢复单表,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 GreatSQL社区原创内容未经授权不得随意使用,转载...

    2022-12-17技术教程
  • ubuntu如何搭建vsftpd服务器
    ubuntu如何搭建vsftpd服务器

    这篇文章主要介绍了ubuntu如何搭建vsftpd服务器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录 一、vsftpd是什么? 二、搭建过程 1.查询vsftpd是否存在和安装成功 2....

    2022-12-17技术教程
  • 本地windows安装两个mysql服务器,配置主从同步
    本地windows安装两个mysql服务器,配置主从同步

    大型网站为了缓解大量的并发访问,除了在网站实现分布式负载均衡,还会搭建服务器mysql集群技术,来分担主数据库的压力。在本地电脑能实现这样的技术吗,本地windows安装两个mysql服务器,配置主从同步也是可是实...

    2022-12-17技术教程,
  • ubuntu20.04虚拟机无法上网的问题及解决
    ubuntu20.04虚拟机无法上网的问题及解决

    这篇文章主要介绍了ubuntu20.04虚拟机无法上网的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录 前言 一、现象 二、解决方式 1、使用DHCP动态分配IP地...

    2022-12-17技术教程
  • windows系统下SQL Server 2008超详细安装教程
    windows系统下SQL Server 2008超详细安装教程

    有很多同学不知道怎么安装SQL Server 2008,今天我就在这里教大家怎么安装SQL Server 2008,下面这篇文章主要给大家介绍了关于windows系统下SQL Server 2008超详细安装教程的相关资料,需要的朋...

    2022-12-17技术教程
  • keepalived + nginx 实现高可用方案
    keepalived + nginx 实现高可用方案

    这篇文章主要介绍了keepalived + nginx 实现高可用方案的相关资料,需要的朋友可以参考下 目录 1.概述 2.准备工作 3.配置 keepalived 3.1 master (172.16.225.111) 3.2 master (172.16.225.110) 4.配置 nginx_c...

    2022-12-17技术教程
  • SQL行列转换超详细四种方法详解
    SQL行列转换超详细四种方法详解

    在数据分析的面试中SQL问题基本上是必问的,其中SQL行列转换的问题出镜率极其高,重要性也是不言而喻,下面这篇文章主要给大家介绍了关于SQL行列转换超详细四种方法的相关资料,需要的朋友可以参考下 目录 前言 1.使...

    2022-12-17技术教程
  • Valheim服务器 Mod修改安装教程 【ValheimPlus】
    Valheim服务器 Mod修改安装教程 【ValheimPlus】

    这篇文章主要介绍了Valheim服务器 Mod修改安装 【ValheimPlus】,本教程只提供Windows版本服务器的mod安装过程,Linux的安装教程过程是一样的本人懒得写了,此mod采用c配置,需要的朋友可以参考下 目录 Valheim服...

    2022-12-17技术教程