正文 基於VFP的數據加密之路(3 / 3)

return

endif

pass=trim(ThisForm.Text2.value)

if empty(pass)

a=messagebox(“請輸入口令!”,0+48,“信息窗口”)

ThisForm.Text2.setfocus

return

endif

use klk

locate for klk.user_id=name

if found()=.f.

a=messagebox(“你不是指定用戶,請與係統管理員聯係!”,64,“提示信息”)

Thisform.release

else

ok=Thisform.decode(pass)

if ok=.t.

ThisForm.Label3.caption=“歡迎使用!”

wait window ‘歡迎使用!按任意鍵進入“係統維護模塊。”’

releasethisform

do formwh_wh

else

if m=3

m=m+1

ThisForm.Label3.caption=“口令錯,您無權使用”

a=messagebox(“對不起,您無權使用!”,0+48,“信息窗口”)

releasethisform

else

a=messagebox(“口令錯,請重新輸入!”,0+48,“信息窗口”)

ThisForm.Text2.value=“”

ThisForm.Text2.setfocus

m=m+1

endif

endif

endif

改變密碼的思路是:首先讀取用戶姓名,如果是新用戶則請用戶輸入新密碼,並記錄下獲得新密碼的時間;如果是老用戶,則讀取用戶舊密碼,將舊密碼進行解密運算並和口令庫內容比較,如果正確,請用戶輸入新密碼,並將新密碼通過解密運算存入口令庫,並記錄修改時間。主要代碼如下:

name=ThisForm.Text3.value

oldpass=ThisForm.Text1.value

newpass=ThisForm.Text2.value

if isblank(newpass)

a=messagebox(“請重新輸入新密碼!”,64,“信息提示”)

ThisForm.Text1.setfocus()

return

endif

success=thisform.decode(oldpass)

if _disibledevent=messagebox(“舊密碼已經修改完成,下次請使用新密碼!”,64,“信息提示”)

ThisForm.Command2.setfocus

return

在改變密碼的窗口(form)中,要定義“加密過程”和“解密過程”,方法如上所述。

以上是一個加密算法的主要思路和關鍵代碼,這個加密算法還可以進一步完善,如采用不同的函數進行運算。例如加入日期,使每個人每天的密碼都不一樣,用CDOW()函數作為鍵值的一部分,這樣安全性就更勝一籌。

世界上還沒有破解不了的密碼,隻是采用不同的設計方法,使破解的難度更大一些。矛與盾的較量永遠不會停止,一切都是運動中的一個暫時平衡。路在延續,而且一直延續……。(作者單位:長江工程職業技術學院)