孟 敬
(廣東交通職業技術學院,廣東 廣州 510650)
隨著計算機技術的飛速發展,其應用方面已滲透到社會生活的各個領域.為了適應未來信息化社會的需要,而且隨著社會的逐步繁榮昌盛,人們生活水平的不斷提高,人民幣的流通也就日漸增長,銀行業務也就越來越繁忙,采用原有的人工管理已不能適應現行銀行工作管理的要求[1,2].進入二十一世紀以后,自動取款機就應運而生,而且也逐步發展起來,滲透到各大銀行.它以安全的性能、快捷方便的操作方法很快就受到了人們的青睞[3,4].本系統是模擬自動取款機系統,讓客戶了解自動取款機的功能,本系統的設計主要是設計安全性,因為用戶的密碼要受到保護,以防止被盜或者篡改,在設計安全性上用到MD5算法,當用戶登錄取錢或者修改密碼時,用戶的密碼都是用MD5算法加密后存儲在文件系統中,在頁面上不會顯示密碼的明碼,當用戶輸入用戶名和密碼進行登錄時,系統會自動將密碼用MD5算法進行計算得到MD5值,接著將此MD5值與文件系統中保存的MD5值進行比較,如果兩個值相等,則說明密碼正確,否則密碼不正確.因此通過MD5算法系統,在不保存用戶密碼明碼的情況也能夠確定登錄系統的用戶的合法性.
銀行柜員使用柜員終端處理儲戶提交的儲蓄事務.用戶在開通儲蓄賬戶后可以在自己的賬戶內存款及取款,也可以在自己的賬號內開新的賬戶.當儲戶存款時,柜員負責將接收儲戶的現金或支票,并提交存款事務輸進柜員終端;當儲戶取款時,柜員負責付給儲戶現金,并將取款事務輸進柜員終端.柜員終端與銀行計算機聯網,銀行計算機負責將柜員終端處理的事物進行處理,更新與維護儲戶賬戶平衡.
銀行儲戶可以向銀行申辦現金兌換卡,使用現金兌換卡、通過ATM訪問儲戶自己的賬戶,可以進行取款、查詢、轉賬,在將來的系統擴展上可以實現存儲等功能.現金兌換卡就是一種帶有分行代碼以及卡號信息的磁卡,其中分行代碼能夠唯一標識總行下屬的一個分行,卡號能夠唯一確定儲戶.通常,一張卡可以訪問儲戶的若干個賬戶,但是不一定能訪問該儲戶下的全部賬戶.每一張現金兌換卡都只屬于一個儲戶所有,但是可以有多個副本,所以在設計的時候必須考慮到在ATM上可能同時使用同一張現金兌換卡的多個副本,因而系統應該設計為可以并發訪問.
使用現金兌換卡的流程是,將現金兌換卡插入ATM,ATM與用戶進行人機交互,并與中央計算機交換信息,以確認該卡是否是合法的現金兌換卡.當判斷合法時,要求儲戶輸入密碼,ATM把密碼信息及讀取到的該卡的分行、卡號信息傳輸給中央處理計算機,請求中央處理計算機核對并處理這些信息,中央計算機根據分行信息確定處理此事務對應的分行,將信息提交給分行計算機,由分行計算機對卡號及密碼信息進行驗證,如果密碼正確,儲戶就可以在ATM上進行取款、查詢、轉賬等操作.當用戶進行取款操作時,ATM要求用戶輸入取款額,當取款額不大于儲戶賬戶余額時,ATM在現金出口吐出現金,如用戶需要賬單則打印出賬單交給用戶,結束本次操作,用戶可以繼續進行取款或查詢操作,直到退卡結束本次事務.如用戶進行查詢操作時,可以查詢卡上余額等信息.當用戶進行轉賬操作時,要求用戶輸入轉出賬號,并再次輸入轉出賬號,當兩次賬號相同時,要求輸入轉賬金額,當轉賬金額不大于賬戶余額時,轉賬成功.當儲戶輸入的密碼不正確時,可以重新輸入,或者直接退卡.
設計的自動取款機系統的功能結構圖,如圖1所示.
每次對數據的讀取都要連接數據庫和關閉數據庫,每次設置的密碼安全都要用到MD5算法,所以筆者將數據庫的連接和關閉MD5算法分別寫一個類.MD5算法的主要功能是在用數字簽名軟件對大容量的數據簽署私人密鑰之前進行“壓縮”,轉換成一種保密格式,這種轉換即把一個任意長度的字節串變換成一定長的大整數.MD5算法原理可以描述為:MD5處理輸入的信息以512位作為一個分組,每一個分組劃分成32位的16個子分組,經過這些處理后,算法輸出由4個32位分組組成,這4個32位的分組級聯后生成一個128位散列值.

圖1 自動取款機系統功能結構圖
MD5算法的具體步驟為:(1)對信息進行填充,在信息的后面填充一個1和多個0,直到字節的長度對512求余的結果為448才停止填充0.經過填充后的信息被擴展到n*512+448,其中n為正整數.(2)在經過(1)的步驟處理后的結果后面附加一個填充之前的信息長度,該信息長度采用64位二進制的值表示.通過這兩個步驟處理后的信息字節長度增加了64位,用算式表達為n*512+448+64,該算式可以簡化為(n+1)*512,也就是說信息長度為512的整數倍.這樣得到的結果能夠滿足后面設計中對信息長度的處理要求.
MD5算法中32位整數參數有四個,它們的值分別為:a=0x01234567,b =0x89abcdef,c=0xfedcba98,d =0x76543210,這四個值稱之為鏈接變量.設置好這四個變量后,MD5算法便進入四輪物質循環運算.循環的次數是信息中512位信息分組的數目.
此模塊實現用戶注冊功能.客戶需要注冊的用戶名和密碼,若客戶注冊的用戶名已經存在則注冊失敗;注冊成功,密碼是以加密形式保存到數據庫中.在注冊用戶時,調用MD5算法的 getMD5ofStr(String s)方法,代碼如下[5]:

讓用戶注冊的密碼以加密的形式保存到數據庫中,而且把用戶的信息保存到一個session中,session.setAttribute("user",user).此模塊設計圖如圖2所示.
用戶登錄時,再次調用MD5算法的getMD5ofStr(String s)方法,代碼如下[6]:


圖2 注冊模塊
然后驗證用戶名和密碼是否正確,若正確跳轉到success.jsp頁面,若不正確跳轉到login.jsp頁面.
此模塊實現用戶登錄,用戶輸入用戶名和密碼,若輸入的用戶名或者密碼錯誤則無法登錄,若輸入的用戶名及密碼正確,則進入取款和轉賬的主功能模塊.此模塊設計圖如圖3所示.

圖3 登錄模塊
此模塊為實現取款功能,取款金額若比已存的金額大則取款失敗,取款成功則提示“取款成功”.從帳號上扣除相應取款金額,并吐出現金.其功能圖如圖4所示.

圖4 取款模塊
此模塊實現從登錄賬戶上轉出不高于該賬戶上的金額到指定的賬戶上.轉賬金額若比已存的金額大則轉賬失敗,轉賬成功則提示“轉賬成功”.轉賬模塊設計圖如圖5所示.

圖5 轉賬模塊
此模塊實現修改密碼功能:當客戶需要修改密碼時,首先需要以正確的用戶名及密碼登錄系統,進入主功能界面后再修改密碼.修改密碼需要用戶兩次輸入新密碼,若兩次輸入的密碼不一樣則修改失敗,修改密碼成功則提示“密碼修改成功”.修改密碼模塊如圖6所示.

圖6 修改密碼模塊
通過前面對ATM系統的設計,可以了解自動取款機的功能和流程,而且可以了解到每個模塊之間的聯系和這些模塊頁面之間是怎么跳轉的.每個頁面的操作成功與否都會跳轉不同的頁面,也有相應的提示.該系統最重要的是讓我們進一步了解到該系統是怎么處理安全性的.每個銀行要做的最重要的事情就是讓它的系統安全,在設計系統時也是把安全性放在第一位,處理密碼安全時用到了MD5算法,在用戶注冊和登錄時,所輸入的密碼都用到了MD5算法,即將用戶輸入的密碼的明碼通過MD5算法加密獲得MD5密碼值,將經過加密后的MD5值存儲在文件系統中.即系統中并沒有保存密碼的明碼,這樣可以使用戶密碼更加安全,銀行系統管理員也不能知道用戶的密碼,而且也加大了密碼的破譯難度,從而使得系統更加安全.
[1]劉欣愉.銀行自助設備跨平臺軟件系統設計與實現[D].上海:華東師范大學碩士學位論文,2008.
[2]湯一平,何祖靈,金冶.基于全方位計算機視覺的ATM機智能監控[J].浙江工業大學學報,2010,(1):30-36.
[3]張冬泉.ATM業務及故障監控系統的研究與開發[J].計算機工程,2006,(21):232 -234.
[4]桂俊德.基于TOP-DOWN技術的自動取款機開發[J].CAD/CAM 與制造業信息化,2009,(12):65 -68.
[5]劉曉華,張健,周慧貞.JSP應用開發詳解(第三版)[M].北京:電子工業出版社,2007.
[6]王蓓.中文版Dreamweaver CS3網頁制作實用教程[M].北京:清華大學出版社,2009.