使用 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 不接受空值的輸入,所以需要處理空字符串的情況。