在客户/服务器应用程序中,VisualFoxPro是一个理想的前端开发工具,它为用户组织信息、运行查询、创建集成的关系型数据库系统以及为最终用户编写功能全面的数据管理应用程序提供所有的工具。那么我今天就给您谈谈VisualFoxPro数据库文件加密方法。

一、Visual FoxPro数据库概述

利用项目管理器(PROJECT MANAGER)可以建立数据库、表、表单、查询及报表等。当需要时,只要打开项目管理器,就可以直接从中读取,而不必从磁盘上搜索。通过向(WIZABDS)提供的许多功能强大的控件,不用编程就可以创建应用程序界面。利用生成器(BUILDERS)用户可以简化创建和修改用户界面程序的设计过程,提高软件开发的质量。每个生成器都由一系列选项卡组成,允许用户访问并设置所选对象的属性。用户可以将生成器生成的用户界面直接转换成程序代码,把用户从逐条编写、反复调试程序的工作中解放出来。

作为一个完善的数据库管理系统,数据的保密性设置是非常重要的,Visual FoxPro没有Access那样提供了密码访问的功能,不过可以通过破坏存储格式的方法,可以达到对数据库所有数据表进行加密的目的。

二、Visual FoxPro数据库的加密技术

Visual FoxPro将数据按照指定格式存放到以“.DBF'’为扩展名的文件系统中,如果破坏了此种文件的存储格式,Visual FoxPro就无法将其打开,即达到了加密的目的。根据这个原理,当数据库系统要关闭时,系统将数据库中所有数据表都以低级文件格式打开,然后通过一个密钥对文件中每个字符进行异或运算。异或运算最大的一个特点就是A∧_B∧_B=A,也就是说,当对同一个数进行两次异或运算时,结果还是这个数。当系统再次登录时,便可以通过对已经加密的数据库文件进行异或运算的方法进行解密。解密后的文件是可以通过Visual FoxPro进行访问的。

服务端到接入设备的数据收发使用标准的TELNET协议实现,连接双方都需要实现物理终端到NVT的数据转换。通信两端数据均以7bit的ASCII字符集发送,但发送格式为8bit,最高位直接置为0。TELNET通信双方使用带内信令方式,如果收到0×255 (IAC)则表示接下来的数据作为命令来解释。如果需要发送数据255,则必须连续发送两个255字节。在初始化选项协商过程中,会出现四种协商状态:

WILL:发送方自身将激活选项,回应DO为接受,回应DONT为拒绝。

DO:发送方想让接收端激活选项,回应WILL为接受,回应WONT为拒绝。

WONT:发送方自身想禁止选项,对方必须回应DONT以同意禁止行为。

DONT:发送方想让接收端禁止选项,对方必须回应WONT以同意禁止行为。

对于DO和WILL选项,接收方有权同意会拒绝。但对于WONT和DONT,接收方必须同意。选项协商需要3个字节:第一个是IAC字节,第二个是WILL、DO、WONT、DONT之一,最后一个字节是启用或禁止的选项。协商过程是对称的,也就是说通信双方都可以发起协商请求。但对于子选项的协商,则不仅仅是同意或拒绝所能表示的。例如制定终端类型,为了处理这种选项,必须定义子选项协商。

在SNMP接口设计方面,SNMP协议是目前用来对网络设备进行控制管理的一种主要方式,SNMP遵循了代理和管理站模型。对于SNMP代理来说,它能够回答来自于SNMP管理站如网管系统的关于MIB库中定义的信息的查询及修改。本系统使用出了可以使用TELNET协议对接入层网络设备进行控制之外,也可以使用SNMP协议对网络设备进行更有效的控制。

三、Visual FoxPro数据库加密技术的应用

表现层负责向用户提供交互界面。控制层主要同数据库和网络设备进行交互,其中设备控制部分负责向接入网络设备发送控制指令并将操作存入数据库中,日志分析部分负责对接入设备发送的日志进行分析,分析结果存入数据库,对攻击主机的隔离与解除隔离指令则发送给设备控制部分,从而实现对设备的控制联动。系统整体架构如图1所示:

VisualFoxPro数据库加密技术及其应用

SYSLOG服务是对交换机发来的UDP日志信息进行接收的切入点。这个功能使用JAVA套接字开发完成。UDP日志信息对于数据的少量丢失并不关注,这个服务只需要对大量的宏观信息进行分析即可。SYSLOG日志发送的目的端口为UDP514端口,SYSLOG接收器也需要对这个端口进行侦听。在构建DatagramSocket的时候需要设置两个参数,分别为端口和缓冲区大小。

由于SYSLOG日志是数量极其庞大,但单条日志数据量很小的数据流。缓冲区和UDP报文长度都指定为1024字节为合适。如下为UDP端的构造方法:

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

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

对于套接字因网络数据传输错误产生异常,这种异常往往会导致程序出错退出。SYSLOG服务对数据的完整程度并不敏感,分析的只是宏观数据。所以对于这些网络错误,可以完全压制而不会有任何负面影响。由于数据的处理是在死循环中完成的,当UDP套接字出现故障时,在finally区中需要对UDP端点进行重新构造,构造方法如下:

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

构造的前提是需要判断先前的UDP端点已被关闭,否则有会出现内存泄露问题。

小知识之Visual FoxPro

Visual FoxPro简称VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。Visual FoxPro源于美国Fox Software公司推出的数据库产品FoxBase,在DOS上运行,与xBase系列相容。FoxPro原来是FoxBase的加强版,最高版本曾出过2.6。之后,Fox Software被微软收购,加以发展, 使其可以在 Windows 上运行, 并且更名为 Visual FoxPro。目前最新版为 Visual FoxPro 9.0,而在学校教学和教育部门考证中还依然延用经典版的 Visual FoxPro 6.0。在桌面型数据库应用中,处理速度极快,是日常工作中的得力助手。