Oracle MD5加密實現
技術點 :
1.1 DBMS_OBFUSCATION_TOOLKIT.MD5
DBMS_OBFUSCATION_TOOLKIT.MD5是MD5編碼的資料包函式,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual時,卻有錯誤提示,看來該函式只能直接在程式包中呼叫,不能直接應用於SELECT語句。
2.2 Utl_Raw.Cast_To_Raw
DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW型別,要正確顯示,需要經過Utl_Raw.Cast_To_Raw轉換
舉例:
使用函式實現:
1、建立函式
CREATE OR REPLACE FUNCTION GET_MD5
( p_str in varchar2)
RETURN varchar2 IS
BEGIN
RETURN Utl_Raw.Cast_To_Raw(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => Upper(P_Str)));
END;
2、select get_md5('you password') from dual;
注意得到的md5字串都是大寫,如果資料庫中存在的是小寫,需要lower轉換一下(比如urs)
使用儲存過程實現:
1、建立儲存過程
CREATE OR REPLACE PROCEDURE get_md5
(
i_str in varchar2,
o_str out varchar2
)
is
begin
o_str :=Utl_Raw.Cast_To_Raw(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => i_str));
end get_md5;
2、呼叫儲存過程
declare
i_str varchar2(32);
o_str varchar2(32);
begin
i_str := '1111';
get_md5(i_str, o_str);
dbms_output.put_line(o_str);
end;