背景
工作中,需要对数据库中的lob类型字段进行MD5值计算,从而判断lob内容是否唯一。实现方式有多种,如开发程序实现、数据库实现。这里采用Oracle的DBMS_CRYPTO包实现。
DBMS_CRYPTO简介
DBMS_CRYPTO包含基本的加密函数和过程。要正确且安全地使用此包,需要具备一般级别的安全专业知识。
DBMS_CRYPTO包支持对常见Oracle数据类型进行加密和解密,包括RAW和大对象(lob),比如图像和声音。具体来说,它支持blob和clob。此外,它还提供了跨不同数据库字符集加密数据的全球化支持。
支持密码算法如下:
-
Data Encryption Standard (DES), Triple DES (3DES, 2-key and 3-key)
-
Advanced Encryption Standard (AES)
-
MD5, MD4, SHA-1, and SHA-2 cryptographic hashes
-
MD5, SHA-1, and SHA-2 Message Authentication Code (MAC)
过程
--赋权
grant execute on DBMS_CRYPTO to USERNAME;
--确认是否具有该权限
SELECT * FROM user_tab_privs WHERE table_name = 'DBMS_CRYPTO';
--生成MD5
select lower(rawtohex(dbms_crypto.hash(utl_raw.cast_to_raw('张三'),2 /*dbms_crypto.HASH_MD5*/))) from