基于VB的動態(tài)矩陣密碼系統(tǒng)的設(shè)計與實現(xiàn)
楊小萍, 李德錄,鮑麗紅 2008/12/3
(接上頁)組成,n*m個數(shù)據(jù)就對應(yīng)著n*m個坐標(biāo)。在傳統(tǒng)的登陸界面之后,接著系統(tǒng)要求用戶輸入矩陣密碼,如圖1矩陣密碼輸入界面圖所示。每個用戶手中都有一個密碼核對器,其界面如圖2所示,其上數(shù)字鍵也是滾動隨機排列。根據(jù)矩陣密碼輸入界面顯示的高亮點所在坐標(biāo),將該橫縱坐標(biāo)值組合值鍵入密碼核對器,密碼核對器將輸出一個兩位密碼值,再將該值輸入矩陣密碼界面,產(chǎn)生第二組新的高亮點,再將該高亮點所在坐標(biāo)繼續(xù)輸入到核對器,換取第二組密碼,再將該密碼輸入矩陣密碼界面,得到第三個高亮點坐標(biāo)值,根據(jù)該隨機坐標(biāo)值,再通過用戶手中的密碼核對器,得到第三組密碼,將該密碼輸入矩陣密碼界面…如此反復(fù),直到輸入指定組數(shù)的矩陣密碼,身份得以確認為止。
4.2動態(tài)矩陣密碼的實現(xiàn)
以8*10矩陣密碼為例,以下對具體實現(xiàn)方法做詳細說明。
1) 客戶登陸界面 即傳統(tǒng)登陸界面,要求用戶輸入賬號和密碼。
2) 矩陣密碼界面 如圖1所示,系統(tǒng)隨機提示坐標(biāo),提示的坐標(biāo)會被高亮顯示,要求用戶輸入高亮坐標(biāo)所對應(yīng)的坐標(biāo)值。密碼輸入的鍵值將隨機滾動,當(dāng)捕獲到鼠標(biāo)在其區(qū)域時系統(tǒng)鍵值將停止?jié)L動,并且隱藏鍵值。這樣用戶輸入的字符便不會被截屏竊取了。
3) 用戶密碼核對器界面 如圖2所示,鍵值也隨機滾動,當(dāng)捕獲到鼠標(biāo)在其區(qū)域時系統(tǒng)鍵值將停止?jié)L動。
4) 多次輸入 系統(tǒng)提示分多次輸入矩陣密碼。譬如,系統(tǒng)連續(xù)提示三個坐標(biāo),只有當(dāng)三次坐標(biāo)值都輸入正確才可正常登陸系統(tǒng)。多次輸入隨機矩陣密碼使得密碼被一次破解的概率大大降低,即使被破解密碼,也無法獲得其它矩陣密碼,無法登陸。
5) 矩陣密碼的存儲方式 可由卡片存儲亦可用文件存儲。
如筆者寫的這個矩陣密碼小程序。其輸入方式都為滾動鍵值和鍵值隱藏的方式,由文件存儲矩陣密碼。
4.3 部分代碼
滾動鍵值實現(xiàn)的部分代碼:
For i = 0 To 9
Randomize
Num(i) = i
Numb(i) = Rnd(100) //取10個隨機數(shù)
Next i
Do
Flag = 1
For i = 0 To 8 //數(shù)組0~9與隨機數(shù)組相對應(yīng)
If Numb(i) ﹥ Numb(i + 1) Then //對隨機數(shù)組排序便得到一個0~9的隨機數(shù)列,并
//保證一個數(shù)值不會重復(fù)出現(xiàn)。
k = Numb(i)
Numb(i) = Numb(i + 1)
Numb(i + 1) = k
k = Num(i)
Num(i) = Num(i + 1)
Num(i + 1) = k
Flag = 0
End If
Next
If Flag = 1 Then //如果排序完成,便跳出循環(huán)
Exit Do
End If
Loop
For i = 0 To 9
Command1(i).Caption = Num(i)
Next
鍵值設(shè)計的部分代碼:
Private Sub Command1_Click(Index As Integer)
If Len(code) ﹤ 8 Then
code = code + Command1(Index).Caption
Form1.Text1.Text = code
End If
End Sub
Private Sub Command2_Click()
If Len(code) ﹤﹥ 0 Then
code = Left(code(未完,下一頁)
|