使用 Oracle 的 utl_raw
、DBMS_OBFUSCATION_TOOLKIT 可以获取 md5 加密字符串:
select utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => '123456')) from dual; select lower(utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => '123456'))) from dual; E10ADC3949BA59ABBE56E057F20F883E e10adc3949ba59abbe56e057f20f883e
默认结果是大写的,想要得到小写的结果,需再用 lower()函数转换一下。
可以据此创建一个简单的 md5 函数,方便使用:
CREATE OR REPLACE FUNCTION fun_md5(src IN VARCHAR2)RETURN VARCHAR2 IS retVal varchar2(32); BEGIN retVal := (case when src is null then null else utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => src)) end); RETURN retVal; END; 使用: select fun_md5('123456') from dual; select fun_md5('') from dual; select fun_md5(null) from dual; 输出: E10ADC3949BA59ABBE56E057F20F883E 后两个输出为空
【注意】:DBMS_OBFUSCATION_TOOLKIT.MD5 不接受空值的输入,所以需要处理空字符串的情况。