VisualFoxPro數(shù)據(jù)庫加密技術(shù)及其應(yīng)用

在客戶/服務(wù)器應(yīng)用程序中,VisualFoxPro是一個理想的前端開發(fā)工具,它為用戶組織信息、運行查詢、創(chuàng)建集成的關(guān)系型數(shù)據(jù)庫系統(tǒng)以及為最終用戶編寫功能全面的數(shù)據(jù)管理應(yīng)用程序提供所有的工具。那么我今天就給您談?wù)刅isualFoxPro數(shù)據(jù)庫文件加密方法。

一、Visual FoxPro數(shù)據(jù)庫概述

利用項目管理器(PROJECT MANAGER)可以建立數(shù)據(jù)庫、表、表單、查詢及報表等。當需要時,只要打開項目管理器,就可以直接從中讀取,而不必從磁盤上搜索。通過向(WIZABDS)提供的許多功能強大的控件,不用編程就可以創(chuàng)建應(yīng)用程序界面。利用生成器(BUILDERS)用戶可以簡化創(chuàng)建和修改用戶界面程序的設(shè)計過程,提高軟件開發(fā)的質(zhì)量。每個生成器都由一系列選項卡組成,允許用戶訪問并設(shè)置所選對象的屬性。用戶可以將生成器生成的用戶界面直接轉(zhuǎn)換成程序代碼,把用戶從逐條編寫、反復(fù)調(diào)試程序的工作中解放出來。

作為一個完善的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)的保密性設(shè)置是非常重要的,Visual FoxPro沒有Access那樣提供了密碼訪問的功能,不過可以通過破壞存儲格式的方法,可以達到對數(shù)據(jù)庫所有數(shù)據(jù)表進行加密的目的。

二、Visual FoxPro數(shù)據(jù)庫的加密技術(shù)

Visual FoxPro將數(shù)據(jù)按照指定格式存放到以“.DBF'’為擴展名的文件系統(tǒng)中,如果破壞了此種文件的存儲格式,Visual FoxPro就無法將其打開,即達到了加密的目的。根據(jù)這個原理,當數(shù)據(jù)庫系統(tǒng)要關(guān)閉時,系統(tǒng)將數(shù)據(jù)庫中所有數(shù)據(jù)表都以低級文件格式打開,然后通過一個密鑰對文件中每個字符進行異或運算。異或運算最大的一個特點就是A∧_B∧_B=A,也就是說,當對同一個數(shù)進行兩次異或運算時,結(jié)果還是這個數(shù)。當系統(tǒng)再次登錄時,便可以通過對已經(jīng)加密的數(shù)據(jù)庫文件進行異或運算的方法進行解密。解密后的文件是可以通過Visual FoxPro進行訪問的。

服務(wù)端到接入設(shè)備的數(shù)據(jù)收發(fā)使用標準的TELNET協(xié)議實現(xiàn),連接雙方都需要實現(xiàn)物理終端到NVT的數(shù)據(jù)轉(zhuǎn)換。通信兩端數(shù)據(jù)均以7bit的ASCII字符集發(fā)送,但發(fā)送格式為8bit,最高位直接置為0。TELNET通信雙方使用帶內(nèi)信令方式,如果收到0×255 (IAC)則表示接下來的數(shù)據(jù)作為命令來解釋。如果需要發(fā)送數(shù)據(jù)255,則必須連續(xù)發(fā)送兩個255字節(jié)。在初始化選項協(xié)商過程中,會出現(xiàn)四種協(xié)商狀態(tài):

WILL:發(fā)送方自身將激活選項,回應(yīng)DO為接受,回應(yīng)DONT為拒絕。

DO:發(fā)送方想讓接收端激活選項,回應(yīng)WILL為接受,回應(yīng)WONT為拒絕。

WONT:發(fā)送方自身想禁止選項,對方必須回應(yīng)DONT以同意禁止行為。

DONT:發(fā)送方想讓接收端禁止選項,對方必須回應(yīng)WONT以同意禁止行為。

對于DO和WILL選項,接收方有權(quán)同意會拒絕。但對于WONT和DONT,接收方必須同意。選項協(xié)商需要3個字節(jié):第一個是IAC字節(jié),第二個是WILL、DO、WONT、DONT之一,最后一個字節(jié)是啟用或禁止的選項。協(xié)商過程是對稱的,也就是說通信雙方都可以發(fā)起協(xié)商請求。但對于子選項的協(xié)商,則不僅僅是同意或拒絕所能表示的。例如制定終端類型,為了處理這種選項,必須定義子選項協(xié)商。

在SNMP接口設(shè)計方面,SNMP協(xié)議是目前用來對網(wǎng)絡(luò)設(shè)備進行控制管理的一種主要方式,SNMP遵循了代理和管理站模型。對于SNMP代理來說,它能夠回答來自于SNMP管理站如網(wǎng)管系統(tǒng)的關(guān)于MIB庫中定義的信息的查詢及修改。本系統(tǒng)使用出了可以使用TELNET協(xié)議對接入層網(wǎng)絡(luò)設(shè)備進行控制之外,也可以使用SNMP協(xié)議對網(wǎng)絡(luò)設(shè)備進行更有效的控制。

三、Visual FoxPro數(shù)據(jù)庫加密技術(shù)的應(yīng)用

表現(xiàn)層負責向用戶提供交互界面??刂茖又饕瑪?shù)據(jù)庫和網(wǎng)絡(luò)設(shè)備進行交互,其中設(shè)備控制部分負責向接入網(wǎng)絡(luò)設(shè)備發(fā)送控制指令并將操作存入數(shù)據(jù)庫中,日志分析部分負責對接入設(shè)備發(fā)送的日志進行分析,分析結(jié)果存入數(shù)據(jù)庫,對攻擊主機的隔離與解除隔離指令則發(fā)送給設(shè)備控制部分,從而實現(xiàn)對設(shè)備的控制聯(lián)動。系統(tǒng)整體架構(gòu)如圖1所示:

VisualFoxPro數(shù)據(jù)庫加密技術(shù)及其應(yīng)用

SYSLOG服務(wù)是對交換機發(fā)來的UDP日志信息進行接收的切入點。這個功能使用JAVA套接字開發(fā)完成。UDP日志信息對于數(shù)據(jù)的少量丟失并不關(guān)注,這個服務(wù)只需要對大量的宏觀信息進行分析即可。SYSLOG日志發(fā)送的目的端口為UDP514端口,SYSLOG接收器也需要對這個端口進行偵聽。在構(gòu)建DatagramSocket的時候需要設(shè)置兩個參數(shù),分別為端口和緩沖區(qū)大小。

由于SYSLOG日志是數(shù)量極其龐大,但單條日志數(shù)據(jù)量很小的數(shù)據(jù)流。緩沖區(qū)和UDP報文長度都指定為1024字節(jié)為合適。如下為UDP端的構(gòu)造方法:

localPoint=new DatagramSocket(lnteger.parselnt(property.g etProperty(”5 14“)));

localPoint.setReceiveB ufferSize(lnteger.parselnt(property.getProperty(“1024”)));

對于套接字因網(wǎng)絡(luò)數(shù)據(jù)傳輸錯誤產(chǎn)生異常,這種異常往往會導(dǎo)致程序出錯退出。SYSLOG服務(wù)對數(shù)據(jù)的完整程度并不敏感,分析的只是宏觀數(shù)據(jù)。所以對于這些網(wǎng)絡(luò)錯誤,可以完全壓制而不會有任何負面影響。由于數(shù)據(jù)的處理是在死循環(huán)中完成的,當UDP套接字出現(xiàn)故障時,在finally區(qū)中需要對UDP端點進行重新構(gòu)造,構(gòu)造方法如下:

if (locaIPoint.isClosed()) local Point =creat eDatagramSocket0;

構(gòu)造的前提是需要判斷先前的UDP端點已被關(guān)閉,否則有會出現(xiàn)內(nèi)存泄露問題。

小知識之Visual FoxPro

Visual FoxPro簡稱VFP,是Microsoft公司推出的數(shù)據(jù)庫開發(fā)軟件,用它來開發(fā)數(shù)據(jù)庫,既簡單又方便。Visual FoxPro源于美國Fox Software公司推出的數(shù)據(jù)庫產(chǎn)品FoxBase,在DOS上運行,與xBase系列相容。FoxPro原來是FoxBase的加強版,最高版本曾出過2.6。之后,F(xiàn)ox Software被微軟收購,加以發(fā)展, 使其可以在 Windows 上運行, 并且更名為 Visual FoxPro。目前最新版為 Visual FoxPro 9.0,而在學校教學和教育部門考證中還依然延用經(jīng)典版的 Visual FoxPro 6.0。在桌面型數(shù)據(jù)庫應(yīng)用中,處理速度極快,是日常工作中的得力助手。