1. 程式人生 > >Oracle MD5加密實現

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;