DBMS_CRYPTO 包

dbms_CRYPTO 包提供一个对数据进行 hash 散列的方法。利用这个包,用户可以对数据进行 MD5 或 SHA1 散列。

41.1 相关方法

dbms_CRYPTO 包中包含的过程和函数如下详细介绍:

  1. HASH

对 varbinary 数据进行 hash 散列。

语法如下:

FUNCTION HASH(
	SRC           	IN    	VARBINARY,
	TYPE			IN		INT
) RETURN VARBINARY;

参数详解

  • SRC 输入参数,需要散列的数据。此处不能为空。

  • TYPE

    输入参数,使用算法,可选值 HASH_MD5、HASH_SH1。HASH_MD5 表示 MD5 信息摘要算法,HASH_SH1 表示安全散列算法 1(SHA-1)。

返回值

散列后的 varbinary 数据。

41.2 举例说明

使用包内的过程和函数之前,如果还未创建过系统包。请先调用系统过程创建系统包。

SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_CRYPTO');
SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_OUTPUT');
SET SERVEROUTPUT ON;  //DBMS_OUTPUT.PUT_LINE需要设置这条语句,才能打印出消息

分别使用 MD5 散列算法、SHA-1 算法对 VARBINARY 类型数据进行散列。

DECLARE 
   RAW_INPUT		VARBINARY(128) := '74696765727469676572746967657274'; 
   MD5_RAW		VARBINARY(2048); 
   SHA1_RAW		VARBINARY(2048);  

   BEGIN 
DBMS_OUTPUT.PUT_LINE('> ========= BEGIN TEST RAW DATA ========='); 
DBMS_OUTPUT.PUT_LINE('> RAW INPUT       : ' ||            RAW_INPUT); 

MD5_RAW := DBMS_CRYPTO.HASH(RAW_INPUT, DBMS_CRYPTO.HASH_MD5); 
   	DBMS_OUTPUT.PUT_LINE('> MD5 HASH       : ' ||              MD5_RAW); 
    	SHA1_RAW := DBMS_CRYPTO.HASH(RAW_INPUT, DBMS_CRYPTO.HASH_SH1); 
     DBMS_OUTPUT.PUT_LINE('> SHA1 HASH     	: ' ||             SHA1_RAW);   
   END; 
/

结果:

> ========= BEGIN TEST RAW DATA =========
> RAW INPUT                     : 74696765727469676572746967657274
> MD5 HASH              		: 831F2AA79221A0F8F330E43A76B53323
> SHA1 HASH             		: 7E48985200C8255A8F7BFF840F9D1F2397A6C65A
微信扫码
分享文档
扫一扫
联系客服