dbms_CRYPTO 包提供一个对数据进行 hash 散列的方法。利用这个包,用户可以对数据进行 MD5 或 SHA1 散列。
41.1 相关方法
dbms_CRYPTO 包中包含的过程和函数如下详细介绍:
- 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