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

基於VFP的數據加密之路

學術展台

作者:解義剛

一、前言

在目前的計算機技術日俞深入到人們的工作和生活當中的時候,為各類應用而生的應用軟件日漸豐富。在各類應用軟件中,數據庫管理軟件是應用的較廣泛的軟件之一。數據及數據庫管理軟件的安全性、保密性是成為開發、應用人員較為關心的問題之一。如何防止無關人員瀏覽數據庫,如何防止數據庫被非法修改、破壞,成為程序員首先要考慮的問題。最常用的方法是給數據庫、管理程序加上密碼。怎麼加密碼,才能使數據更安全呢,這有賴於加密得法。下麵就FOX背景下的加密方法做一探討。

二、傳統的密碼加密方法

從最早的dBASE到現在的Visul FoxPRO,通常都是用加密碼的方法給程序、數據庫加密。常見的密碼有以下幾種:

1、固定密碼

固定密碼,就是進入應用係統時的一個密碼,因為是寫在程序裏的,所以對數據庫用戶而言就是固定不變的。常在用dBASE、FOXBASE、FOXPRO2.X等開發的數據庫管理係統中。其核心是:拿用戶輸入的密碼值(例如保存在PWD中)與係統設定的值進行比較,若正確,就允許進入係統,否則不允許進入係統,中間有三次改正密碼的機會。此處密碼值如“123456”是程序設計時給定的,所以在應用時是無法修改的,如果一定要修改,就要從源程序中更改。當然也可以編寫一段子程序專門用來修改密碼,修改前,一定要先判斷舊密碼是否正確,否則不允許更改密碼,其靈活性很差。

2、簡單加密的固定密碼

簡單加密的固定密碼是指將密碼進行簡單的加密,但密碼本身仍然是固定不變的。一般有兩種形式:即“鑰匙盤”法和“變換法”。“鑰匙盤”法,就是把密碼存放在一張軟盤上,使用時把“鑰匙盤”插入計算機,係統程序讀取軟盤中的用戶名和對應的密碼。或把密碼和操作員姓名存到數據庫中,此數據庫存放於軟盤內,使用時把“鑰匙盤”插入計算機,係統讀取軟盤中的密碼和操作員姓名。因為計算機硬件上已經淘汰軟盤,所以都使用性能更好的U盤,現階段的加密狗就是此方法的延伸。這種加密方法保密性要好一些,但每次使用都要用“鑰匙盤”進入係統,很繁瑣。

變換法,它是通過對密碼進行特定的運算,使密碼的顯示特性發生一定變化的一種密碼保護方法。常用的加密語句如:

PSD=CHR(65)+CHR(66)+CHR(67)+“9”

函數CHR(),是用來換算ASCII碼的,換算後的PSD是ABC9。用這種簡單的換算,可以避免密碼被直接發現,保密性相對來說加強了。

3、簡單加密變化的密碼

以上密碼都是固定的,下麵利用時間函數來加密,使密碼每天都不同。密碼由變化的時間和固定字符構成。其核心語句為:

PWD=SUBSTR(CDOW(DATE()),1,3)+“123456”

CDOW()函數,輸入年月日,返回星期幾(字符型)。操作者根據今天是星期幾,將星期的前3個英文字母和固定的“123456”輸入,與變量PWD比較。程序會把今天的日期換算成星期數,然後取前3位,並加上“123456”,合成今天的密碼變量PWD。這樣就實現了每天有不同的密碼。

以上幾種加密方法都是傳統簡單的加密方法,其特點是簡單、易實現、保密性差,密碼單一,保護能力相對較低,主要用於Dbase到FOXPRO2x開發的程序中。由於這些軟件的編譯不是真正的編譯,其密碼容易被發現。

三、一種新型密碼加密方法——可變密碼

以上介紹的幾種密碼加密方法,密碼是固定的,保密性相對較差。“可變密碼”是將密碼值由設置程序自行改變,形成動態的密碼,由文件保存且經過加密。就是用其他工具看到顯性密碼,也不是真實密碼。常用的加密算運算方法有:轉換法、位移法、時間法、隨機法等。下麵具體介紹一種基於VFP6.0的密碼設定方法。其特點是:具有使用登記功能;每用戶一個密碼,並可隨時更換;密碼經加密運算,不易被破解。