VFP中數據表加密簡單算法
VFP中數據表加密簡單算法
摘要:Microsoft Visual FoxPro(以下簡稱為VFP)作為小型數據庫管理系統的杰出代表[1],用其進行小型數據庫系統的設計比較簡單、方便,但同時有一個比較突出的問題:VFP沒有像其它數據庫那樣提供密碼訪問功能,數據保密性不強。
提出了一種可行的簡單方法,對VFP中的數據表進行加密與解密,以期在實際應用中,加強數據的安全性。
關鍵詞關鍵詞:VFP;數據表;DBF;加密;解密;算法
1加密必要性
VFP中所有信息以二維表(DBF格式文件)形式組織并存放,由于VFP本身的數據保密功能較弱,沒有提供密碼訪問的保護功能,因此利用VFP對數據進行管理時,面臨一個較為嚴重的安全問題:任何用戶只要進入數據庫管理系統后均可以直接使用VFP自由地打開、修改甚至刪除數據庫系統中的數據表文件。
而數據表作為存儲信息的主要數據文件,一旦被毫無限制地訪問、修改,將對數據庫系統造成致命的破壞。
因此,在利用VFP設計數據管理系統時,必須采取有效手段對數據庫系統中的數據表進行加密與解密。
2加密基本原理
2.1DBF文件基本結構
DBF數據結構分為兩部分:頭記錄(header record)部分和數據記錄(data record)部分。
頭記錄從文件0位置開始,定義數據表的結構以及與其它數據有關的信息;數據記錄部分緊接在頭記錄之后,包含了數據表的實際數據內容。
而VFP本身提供多個底層函數,可以方便靈活地將DBF文件以低級格式打開,并對文件頭句柄進行訪問和操作。
2.2加密、解密基本過程
數據加密就是把數據信息(即明文)轉換為不可辨識的形式(即密文)的過程,目的是讓非法人員不能識別,反之,將密文轉變為明文的過程就是解密[2]。
目前對VFP中數據表進行加密常用的方式是:使用隨機偽碼加密、使用VFP本身的底層函數加密等,本文主要利用VFP提供的底層函數和異或算法對數據表加密和解密,此方法簡單、利于實現(該方法后文中簡稱為FX算法)。
異或運算最大的特點就是A^B^B=A,也就是說,當對同一個數進行2次相同的異或運算時,結果還是這個數[3]。
因此利用異或算法的特征,可以使用VFP提供的底層函數打開數據表文件,并利用密鑰對其進行首次異或運算得到密文,此時,數據表文件的數據已被改變。
因此,直接打開該表時,將會提示非正常表文件;解密時利用密鑰對密文進行第二次異或運算,根據異或運算的特征,數據表文件在進行第二次異或運算后,將還原為初始數據(即還原為明文),此時可以正常打開并訪問數據表。
基本過程如圖1所示。
3加密模型實現
以設計一個較為簡單的教務管理系統加密程序為例,教務系統的主要數據包括:學生表student.dbf、教師表teacher、成績表score,均通過數據庫admin.dbc建立連接,進行統一管理。
系統登錄模塊中通常為學生、教師、管理人員等多個不同的登錄端口,如不采用適當的加密措施,造成的結果為:學生登錄成功后,可以隨意打開各個DBF數據表,甚至可以對其進行修改。
加密的主要目的為:管理員退出數據庫管理系統時,調用相應的加密模塊,利用指定的密鑰對數據庫中的數據表文件進行異或運算,將其轉換為普通用戶不能識別的密文,使其不能訪問已加密的數據表;進入數據庫管理系統時,再次調用解密模塊,利用密鑰將已加密的密文轉換為明文,使用戶能夠正常訪問數據表。
4結語
本文討論的FX算法加密方式主要使用VFP本身的底層函數和異或運算對數據表進行加密,算法簡單有效;密鑰可以定期更換,且加密后的數據只需利用密鑰通過簡單的再次異或運算即可解密;該方法始終是在內存中進行的,故即使系統出錯,重新啟動系統也無妨,同時加密與解密模塊的代碼基本相同,無需分別定制單獨的加密與解密模塊,對于小型的VFP數據系統來說,是一種較為實用和有效的安全保護方法。
參考文獻:
[1]王利.Visual FoxPro程序設計[M].北京:高等教育出版社,2006.
[2]段鋼.加密與解密[M].北京:電子工業出版社,2003.
[3]車紫輝.VFP中DBF表的加密和解密方法[J].保定學院學報, 2010,23(3):5355.
【VFP中數據表加密簡單算法】相關文章:
排序算法的算法思想和使用場景總結11-20
算法結題報告01-24
在經歷中成長作文:簡單?不簡單!02-25
簡歷中簡單的自我評價12-10
面試中簡單的自我介紹11-12
簡歷中簡單的自我介紹12-02
面試中的簡單自我介紹10-15
簡單的生活中的語錄集合96句02-21
簡單的生活中的語錄匯編90條01-25
簡單的生活中的語錄集合66條01-19