朱明秀
(廣西工商職業技術學院 電子信息系,南寧 530003)
隨著計算機技術的飛速發展,數據庫的應用越來越廣泛地深入到政府機關、企業單位、媒體學校等領域,同時各種應用系統數據庫中大量數據的信息安全問題也越來越引起人們的重視。為防止數據庫被非法瀏覽、修改、破壞,有必要對數據庫中存儲的重要數據進行加密處理,以實現數據存儲的安全。本文結合VFP 數據庫環境闡述了一些基于數據庫的加密算法, 而且對采取混沌加密算法給出了具體實現。
數據加密就是把數據信息轉換為不可辨識的形式過程,目的是使非法人員不能夠識別。在VFP開發的數據庫系統,數據庫的安全性、保密性是設計者必須考慮的重要問題。最常用的方法是給數據庫管理系統加上密碼,在進入系統時根據不同的用戶輸入一個字符串口令。
目前, 設置這種口令的方法各式各樣, 最簡單的方法就是將口令密碼以固定的形式寫入程序中,只有密碼正確后才能進入系統。另外一種方法是將操作者輸入的密碼通過簡單的運算(如移位、異或等可逆運算) ,轉換為加密后的偽碼存儲在數據庫中。盡管這種加密方法的保密性沒有隨機加密算法好, 但由于其簡潔、快速、實用,因而比較適合用于需要保密但保密要求又不是特別高的系統之中。還有一種方法是將操作者輸入的密碼通過隨機加密算法形成隨機偽碼存放在數據庫中。這種方法在一定程度上克服了上兩種加密算法存在的不足,但由于隨機數的產生并不能真正做到完全隨機,仍難以達到良好保密的要求。本文就結合VFP開發中數據庫的加密方法進行分析和研究。
將密碼進行簡化的加密,但密碼仍是固定不變的。實現方法是把密碼和操作員姓名存入到一個數據庫中,進入系統程序時提示用戶輸入密碼和操作員姓名,系統必須與數據庫中的密碼和操作員姓名進行驗證。下面是此方法的核心語句:
do while I<3
set cons off
@ 10,30 say “請輸入密碼:”
accept to kl
set cons on
if trim(mkl)=trim(kl)
此方法比較繁瑣,數據庫容易被非法瀏覽、修改、破壞,保密性和靈活性相當差,且不能滿足系統對多用戶的要求。但也可以采用函數CHR()來換算密碼ASCII碼, 經過密碼的運算,密碼發生改變,產生密碼無法讓操作者直接識別。一般采用加密語句如:PSD=CHR(65)+CHR(66)+“9”。
加密原理是:先用低級文件函數自定義一個文件頭,其中可包含:文件頭長度、字段名、字段類型、字段長度、每條記錄長度、密鑰等,然后將記錄按文件頭規定的格式加密后,通過低級文件函數fwrite()順序寫入文件中。調用時,再用低級文件函數fread()從自定義的文件中讀取文件頭的內容。用VFP提供的低級文件函數對數據庫中的表文件(.dbf)進行加密,加密后的文件無法打開、瀏覽,從而起到保密數據的作用。使用時,再執行相應解密程序即可將加密的表還原。
例如表文件czr.dbf,記錄內容為進入某系統時合法的用戶名和口令,下面的代碼即是對其進行加密過程。

混沌是指確定性系統中出現的類似隨機的過程,它不同于一般的隨機性,是普遍存在的復雜的又有驚人的有序。混沌是人們在對某些非線性動態系統的研究中發現的, 結構復雜,難以分析和預測,但可以提供具有良好的隨機性、相關性、復雜性的偽隨機序列。初始狀態只有微小差別的兩個混沌系統在較短的時間后就會產生兩組完全不同的、互不相關的混沌序列值。則利用這樣的序列就可以進行加密。
混沌序列加密屬于序列密碼加密,其加密原理與序列密碼加密原理相似, 不同在于一般的序列密碼是利用移位寄存器為基礎的電路來產生偽隨機序列作為密鑰序列,而混沌序列加密是利用混沌系統迭代產生混沌序列作為密鑰序列。混沌序列密碼加密方法靈活多變,可以充分利用混沌信號的特性構造復雜的加密函數。
建立一個數據表(czy.dbf)包括四個字段分別是:操作員(類型是字符型、寬度為8);密碼(類型是字符型、寬度為8);qx是操作員權限(類型是數值型、寬度為8、小數位數為0);mm是存放操作員真實密碼(類型是字符型、寬度為8)。加密的設計思路是:首先讀取操作員姓名,并記錄長度獲得循環次數,通過LEN()、SUBSTR()、ASC()、ALLTRIM()函數將操作員第一字符轉換成十進制ASCⅡ代碼。然后以Logistic映射進行隨機加密,最后將密文寫入文件。下面是主要代碼流程圖,如圖1所示。

圖1 混沌加密算法的流程圖
3.3.1 Logistic 映射的性質
Logistic映射是最典型的,也是研究的最廣泛的動力系統,其定義如下:
Xn + 1 =λXn (1-Xn) Xn ∈[0 ,1 ]
其中:0≤λ≤4。混沌動力學的研究表明,當λ大于3.569945672,小于等于4時,Logistic映射處于混沌狀態,即產生的序列{Xn;n=0 ,1 ,2 ,3 …}是非周期的,不收斂的,且對初始值非常敏感。當λ=4時,該映射是滿射,產生的混沌序列在區間(0,1)上具有遍歷性。
3.3.2 在VFP數據庫實現
從系統的安全性出發,本文只對數據表中的密碼字段做加密處理,且不同的操作權限應使用不同的密鑰,即使一般用戶通過VFP打開數據庫,也不能“看到”或無法修改操作員密碼。下面是此算法的主要語句:


使用混沌加密算法進行加密的用戶文件及其結果分別如圖2和圖3所示。比較兩圖可以看出,相同的字符使用該算法加密后會顯示不同的密文字符。這種加密的密鑰是一次一密的,故而是動態的。因此加密算法是比較安全的,可以滿足VFP數據庫應用系統保密的要求。

圖2 未加密的用戶數據表

圖3 加密的用戶數據表
[1] 翁正科.潘廣和.FOXPRO應用程序300例[M].北京:清華大學出版社,1995:208-212.
[2] 許芳芳.基于混沌加密算法的VFP文件加密[J].福建電腦,2008:85-87.
[3] 張憲君.在VF中如何給文件加密[J].科技咨詢導報,2007,40.