在VB下Access數(shù)據(jù)庫(kù)密碼的安全設(shè)置_第1頁(yè)
在VB下Access數(shù)據(jù)庫(kù)密碼的安全設(shè)置_第2頁(yè)
在VB下Access數(shù)據(jù)庫(kù)密碼的安全設(shè)置_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在VB下Access數(shù)據(jù)庫(kù)密碼的安全設(shè)置     摘要:本文從VB程序設(shè)計(jì)的角度探討了Access數(shù)據(jù)庫(kù)密碼的保存方式及密碼本身加碼、解碼的安全問(wèn)題,以確保數(shù)據(jù)的完整性和安全性。關(guān)鍵詞:VB Access 密碼        0 引言        Access 數(shù)據(jù)庫(kù)作為微軟推出的以標(biāo)準(zhǔn)JET為引擎的桌面型數(shù)據(jù)庫(kù)系統(tǒng),它界面友好、操作簡(jiǎn)單,是開(kāi)發(fā)中小型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的常用平臺(tái),以其功能全面、程序設(shè)計(jì)方便等特點(diǎn)得到了

2、廣泛應(yīng)用。但是隨著Access數(shù)據(jù)庫(kù)的廣泛應(yīng)用,對(duì)其安全性的需求也越來(lái)越高,而數(shù)據(jù)庫(kù)的安全主要體現(xiàn)在數(shù)據(jù)的安全傳送與安全存儲(chǔ),而數(shù)據(jù)的傳送與存儲(chǔ)大多數(shù)都是通過(guò)對(duì)數(shù)據(jù)本身的加密來(lái)實(shí)現(xiàn)的;所以,加密和解密問(wèn)題也就成為Access數(shù)據(jù)庫(kù)安全的首要問(wèn)題。        1 Access密碼的安全隱患        1.1 Access 數(shù)據(jù)庫(kù)的存儲(chǔ)隱患 Access 數(shù)據(jù)庫(kù)的安全隱患第一就是密碼的保存問(wèn)題,將密碼放在程序中和文件中,如果獲得或者猜到Access據(jù)庫(kù)

3、的存儲(chǔ)路徑和數(shù)據(jù)庫(kù)名,則該數(shù)據(jù)庫(kù)就可以被下載到本地1。例如:對(duì)于校園網(wǎng)上的一個(gè)圖書(shū)查詢(xún)的Access數(shù)據(jù)庫(kù),人們一般命名為book.mdb、Library而存儲(chǔ)的路徑一般為        “URL/database”或干脆放在根目錄(“URL/”)下。這樣,只要在瀏覽器地址欄中敲入地址:        “URL/database/Library.mdb”,就可以輕易地把sLibrary.mdb下載到本地的機(jī)器中。   

4、0;    1.2 Access 數(shù)據(jù)庫(kù)的解密隱患 Access數(shù)據(jù)庫(kù)的加密機(jī)制非常簡(jiǎn)單,所以即使數(shù)據(jù)庫(kù)設(shè)置了密碼,解密也很容易. 該數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)將用戶(hù)輸入的密碼與某一固定密鑰進(jìn)行“異或”來(lái)形成一個(gè)加密串,并將其存儲(chǔ)在*.mdb 文件中從地址“H42”開(kāi)始的區(qū)域內(nèi). 由于異或操作的特點(diǎn)是“經(jīng)過(guò)兩次異或就恢復(fù)原值”,因此,用這一密鑰與*.mdb文件中的加密串進(jìn)行第二次異或操作,就可以輕松地得到Access數(shù)據(jù)庫(kù)的密碼.基于這種原理,可以很容易地編制出解密程序2。由此可見(jiàn),無(wú)論是否設(shè)置了數(shù)據(jù)庫(kù)密碼,只要數(shù)據(jù)庫(kù)被下載,其信息就沒(méi)有任何安全性可言了。 

5、0;      2 在VB中提高Access 數(shù)據(jù)庫(kù)安全性的方法        在VB中,通過(guò)編程來(lái)解決數(shù)據(jù)庫(kù)中密碼的安全問(wèn)題,通過(guò)VB中的API函數(shù)來(lái)將密碼保存到注冊(cè)表中,以實(shí)現(xiàn)用戶(hù)合法性檢驗(yàn)的方法;同時(shí)對(duì)密碼進(jìn)行加密和解密。        2.1 利用API函數(shù)在注冊(cè)表中進(jìn)行密碼操作 從以上分析密碼存儲(chǔ)的隱患來(lái)看,密碼保存在程序和文件中,安全性能較差;如果考慮將密碼存入注冊(cè)表中,通過(guò)對(duì)注冊(cè)表的操作,可以

6、將密碼隨便放到注冊(cè)表的什么地方;要想找到密碼字符可謂大海撈針。        VB為用戶(hù)提供了4個(gè)用于注冊(cè)表操作的函數(shù)SaveSetting、GetSetting、GetAllSettings和DeleteSeting,使用這四個(gè)函數(shù)可以方便地操作注冊(cè)表。通過(guò)函數(shù)GetString()將注冊(cè)表項(xiàng)的值賦值給字符變量M,窗體裝入程序段中的M= GetSetting(HKEY_CURRENT_USER,”RegDataAA”,”)語(yǔ)句。當(dāng)用戶(hù)輸入密碼后進(jìn)行核對(duì),如果輸入的密碼與M中相同則為合法用戶(hù),登錄成功。當(dāng)窗體裝入時(shí)調(diào)用Get

7、String函數(shù),在GetString函數(shù)中調(diào)用API函數(shù)RegOpenKey打開(kāi)指定表項(xiàng),打開(kāi)指定表項(xiàng)后,調(diào)入函數(shù)RegQueryStringValue,在RegQueryStringValue函數(shù)中首先調(diào)用API函數(shù)RegQueryValueEx hKey,以得到項(xiàng)值空間的大??;調(diào)用VB的String函數(shù)將變量lDataBufSize按其大小設(shè)為CHR$(0);對(duì)所得鍵值去掉右側(cè)空字符并將結(jié)果賦值給函數(shù)名為        RegQueryStringValue,程序返回到它的調(diào)用之處,GetString函數(shù)操作完畢將鍵值

8、賦給變量M,即可等到保存在注冊(cè)表中的密碼3。主要程序如下:             Function GetString(hKey As Long, strPath As String, strValue As String)        Dim Ret        RegOpenKey hKey, strPath, Ret 

9、0;      GetString = RegQueryStringValue(Ret, strValue)        RegCloseKey Ret        End Function        Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueNa

10、me As String) As String        Dim strString As String        RegQueryValueEx hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize        strBuf = String(lDataBufSize, Chr$(0)  

11、0;     RegQueryValueEx hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize        RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0) - 1)        Exit Function       

12、; 2.2 在VB中對(duì)密碼進(jìn)行加密和解密 當(dāng)然,為了保證密碼的安全,除了考慮密碼的存放方式外,另一方面就是對(duì)密碼本身加密,得到一個(gè)加密的密碼,將密碼加密后存放起來(lái)就更安全了。對(duì)密碼加密實(shí)際是將作為密碼的字符從一種表現(xiàn)形式變?yōu)榱硪环N表現(xiàn)形式的過(guò)程。其中一種方法是設(shè)置一個(gè)被稱(chēng)為“密鑰”的字符或字符串,通過(guò)使用密鑰對(duì)密碼進(jìn)行操作,將明碼變成密碼。在解密時(shí)再使用密鑰對(duì)密碼進(jìn)行逆操作,密碼就還原了。程序使用當(dāng)前輸入的密碼作為密鑰對(duì)輸入的密碼作加密操作,將加密后的密碼存入文本文件PassWord.txt。程序中使用Ciphe過(guò)程和NumerCPAssword函數(shù)對(duì)密碼進(jìn)行加密操作,其中Cipher密鑰。當(dāng)

13、然,密碼加密后在使用時(shí)就要對(duì)它進(jìn)行解密,它們的主要程序如下:        Private Function NumericPassword(ByVal Password As String) As Long        Dim Value As Long,Ch As Long, Shift1 As Long,Shift2 As Long        Dim I As Integer

14、, Str_len As Integer        Str_len = Len(Password)        For I = 1 To Str_len        Ch = Asc(Mid$(Password, I, 1)        Value = Value Xor (Ch * 2 Shift1)

15、60;       Value = Value Xor (Ch * 2 Shift2)        Shift1 = (Shift1 + 7) Mod 19        Shift2 = (Shift2 + 13) Mod 23        Next I        NumericPassword = Value      

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論