Oracle數(shù)據(jù)加密方法分析
本文實(shí)例講述了Oracle數(shù)據(jù)加密方法。分享給大家供大家參考,具體如下:
使用MD5編碼實(shí)現(xiàn)數(shù)據(jù)庫用戶密碼字段的加密
一、前言
眾所周知,MD5是目前應(yīng)用最多的密碼保護(hù)方法,該編碼傳說為不可逆加密編碼(也就是說,永運(yùn)無法倒算原碼)。 使用MD5加密用戶的操作密碼,可以有效防止系統(tǒng)維護(hù)人員直接進(jìn)入數(shù)據(jù)庫時(shí)出現(xiàn)系統(tǒng)安全漏洞(直接使用SELECT語句查詢,將用戶密碼字段只能看到亂碼,或者"****")
這里針對密碼字段加密,作一實(shí)例,希望能給大家系統(tǒng)建設(shè)過程帶來幫助。
二、技術(shù)點(diǎn)
1. DBMS_OBFUSCATION_TOOLKIT.MD5
DBMS_OBFUSCATION_TOOLKIT.MD5是MD5編碼的數(shù)據(jù)包函數(shù),但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual時(shí),卻有錯誤提示,看來該函數(shù)只能直接在程序包中調(diào)用,不能直接應(yīng)用于SELECT語句。
2. Utl_Raw.Cast_To_Raw
DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW類型,要正確顯示,需要經(jīng)過Utl_Raw.Cast_To_Raw轉(zhuǎn)換
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')
更多關(guān)于Oracle相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Oracle常用函數(shù)匯總》、《Oracle日期與時(shí)間操作技巧總結(jié)》及《php+Oracle數(shù)據(jù)庫程序設(shè)計(jì)技巧總結(jié)》
希望本文所述對大家Oracle數(shù)據(jù)庫程序設(shè)計(jì)有所幫助。
相關(guān)文章
Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的兩種解決方法
當(dāng)Oracle數(shù)據(jù)庫中打開的游標(biāo)數(shù)超過了數(shù)據(jù)庫的最大游標(biāo)數(shù)限制時(shí),就會出現(xiàn)“超出打開游標(biāo)最大數(shù)”的錯誤,本文給大家介紹了幾種常見的解決方法,需要的朋友可以參考下2024-02-02Oracle數(shù)據(jù)遠(yuǎn)程連接的四種設(shè)置方法和注意事項(xiàng)
Oracle數(shù)據(jù)庫的遠(yuǎn)程連接可以通過多種方式來實(shí)現(xiàn),本文我們主要介紹四種遠(yuǎn)程連接的方法和注意事項(xiàng),并通過示例來說明,接下來我們就開始介紹2014-04-04ORACLE DATAGUARD中手工處理日志v$archive_GAP的方法
從9i以后,oracle dataguard 備庫一般都不需要手工處理丟失的日志,F(xiàn)AL自動會幫我們處理,本文主要通過個案例來講下手工處理丟失的日志的方法。2014-08-08win7 64位操作系統(tǒng)中Oracle 11g + plsql安裝教程詳解(圖解)
這篇文章主要介紹了win7 64位操作系統(tǒng)中Oracle 11g + plsql安裝教程詳解(圖解),詳細(xì)的介紹了Oracle 11g 安裝的步驟,有興趣的可以了解一下。2017-04-04Oracle連接數(shù)據(jù)庫提示ORA-12638:身份證明檢索失敗的解決辦法
今天在使用應(yīng)用程序連接Oracle時(shí)碰到了"ORA-12638:身份證明檢索失敗"錯誤,給大家總結(jié)解決方法,這篇文章主要給大家介紹了關(guān)于Oracle連接數(shù)據(jù)庫提示ORA-12638:身份證明檢索失敗的解決辦法,需要的朋友可以參考下2023-10-10修改Oracle監(jiān)聽默認(rèn)端口號1521的方法
我們都知道,Oracle的監(jiān)聽默認(rèn)端口是1521,但是如果系統(tǒng)上1521已經(jīng)被占用或業(yè)務(wù)要求不用默認(rèn)端口,又或者是為了安全,這個時(shí)候我們就需要修改監(jiān)聽的默認(rèn)端口。下面這篇文章主要介紹了修改Oracle監(jiān)聽默認(rèn)端口號1521的方法,需要的朋友可以參考下。2017-01-01Oracle數(shù)據(jù)庫在指定字段后新增字段代碼舉例
很多時(shí)候數(shù)據(jù)庫中已有表的字段與需求業(yè)務(wù)所需字段有差異,需要增加一個或多個字段,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫在指定字段后新增字段的相關(guān)資料,需要的朋友可以參考下2023-09-09