程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle數據加密方法分析

Oracle數據加密方法分析

編輯:關於Oracle數據庫

本文實例講述了Oracle數據加密方法。分享給大家供大家參考,具體如下:

使用MD5編碼實現數據庫用戶密碼字段的加密

一、前言

眾所周知,MD5是目前應用最多的密碼保護方法,該編碼傳說為不可逆加密編碼(也就是說,永運無法倒算原碼)。 使用MD5加密用戶的操作密碼,可以有效防止系統維護人員直接進入數據庫時出現系統安全漏洞(直接使用SELECT語句查詢,將用戶密碼字段只能看到亂碼,或者"****")

這裡針對密碼字段加密,作一實例,希望能給大家系統建設過程帶來幫助。

二、技術點

1. DBMS_OBFUSCATION_TOOLKIT.MD5

DBMS_OBFUSCATION_TOOLKIT.MD5是MD5編碼的數據包函數,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual時,卻有錯誤提示,看來該函數只能直接在程序包中調用,不能直接應用於SELECT語句。

2. Utl_Raw.Cast_To_Raw

DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW類型,要正確顯示,需要經過Utl_Raw.Cast_To_Raw轉換

create or replace package test_md5 as
  function fn_getmd5(p_str in varchar2)
    return varchar2;
  function fn_checkuser(p_username in varchar2,p_password in varchar2)
    return number;
end;
create or replace package body test_md5 as
  function fn_getmd5(p_str in varchar2)
    return varchar2 as
  begin
    return DBMS_OBFUSCATION_TOOLKIT.MD5(
      input_string => Upper(p_str)
    );
  end;
  function fn_checkuser(p_username in varchar2,p_password in varchar2)
    return number
  is
    l_password varchar(1000);
  begin
    select password into l_password from test_user
    where upper(username)=upper(p_username) and password=Test_MD5.FN_GetMD5(p_password);
    if l_password is null Then
      return 0;
    else
      return 1;
    end if;
    exception
    when NO_DATA_FOUND then
      return 3;
  end;
end;

測試:

Delete Test_User;
Insert Into Test_User Values('A',Test_MD5.FN_GetMD5('aa'));
Insert Into Test_User Values('B',Test_MD5.FN_GetMD5('bb'));
select * from test_user;
Select Test_MD5.FN_CheckUser('a','aa') From Dual;
Select Test_MD5.FN_CheckUser('a','bb') From Dual;
select * from Test_User t where t.password=test_md5.fn_getmd5('aa')

更多關於Oracle相關內容感興趣的讀者可查看本站專題:《Oracle常用函數匯總》、《Oracle日期與時間操作技巧總結》及《php+Oracle數據庫程序設計技巧總結》

希望本文所述對大家Oracle數據庫程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved