VFP中数据表加密简单算法研究

时间:2022-02-22 10:16:58

VFP中数据表加密简单算法研究

摘要:Microsoft Visual FoxPro(以下简称为vfp)作为小型数据库管理系统的杰出代表[1],用其进行小型数据库系统的设计比较简单、方便,但同时有一个比较突出的问题:VFP没有像其它数据库那样提供密码访问功能,数据保密性不强。提出了一种可行的简单方法,对VFP中的数据表进行加密与解密,以期在实际应用中,加强数据的安全性。

关键词关键词:VFP;数据表;DBF;加密;解密;算法

中图分类号:TP312文献标识码:A 文章编号:16727800(2014)002006102

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.

上一篇:水资源管理系统中最近资源点查找方法研究 下一篇:井场录井信息传输技术应用现状及发展方向