基于VFP数据库加密算法的研究与实现
2010-07-09朱明秀
朱明秀
(广西工商职业技术学院 电子信息系,南宁 530003)
0 引言
随着计算机技术的飞速发展,数据库的应用越来越广泛地深入到政府机关、企业单位、媒体学校等领域,同时各种应用系统数据库中大量数据的信息安全问题也越来越引起人们的重视。为防止数据库被非法浏览、修改、破坏,有必要对数据库中存储的重要数据进行加密处理,以实现数据存储的安全。本文结合VFP 数据库环境阐述了一些基于数据库的加密算法, 而且对采取混沌加密算法给出了具体实现。
1 数据加密技术
数据加密就是把数据信息转换为不可辨识的形式过程,目的是使非法人员不能够识别。在VFP开发的数据库系统,数据库的安全性、保密性是设计者必须考虑的重要问题。最常用的方法是给数据库管理系统加上密码,在进入系统时根据不同的用户输入一个字符串口令。
目前, 设置这种口令的方法各式各样, 最简单的方法就是将口令密码以固定的形式写入程序中,只有密码正确后才能进入系统。另外一种方法是将操作者输入的密码通过简单的运算(如移位、异或等可逆运算) ,转换为加密后的伪码存储在数据库中。尽管这种加密方法的保密性没有随机加密算法好, 但由于其简洁、快速、实用,因而比较适合用于需要保密但保密要求又不是特别高的系统之中。还有一种方法是将操作者输入的密码通过随机加密算法形成随机伪码存放在数据库中。这种方法在一定程度上克服了上两种加密算法存在的不足,但由于随机数的产生并不能真正做到完全随机,仍难以达到良好保密的要求。本文就结合VFP开发中数据库的加密方法进行分析和研究。
2 数据加密算法及实现
2.1 固定密码
将密码进行简化的加密,但密码仍是固定不变的。实现方法是把密码和操作员姓名存入到一个数据库中,进入系统程序时提示用户输入密码和操作员姓名,系统必须与数据库中的密码和操作员姓名进行验证。下面是此方法的核心语句:
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”。
2.2 用VFP提供的低级文件函数实现对数据表的加密
加密原理是:先用低级文件函数自定义一个文件头,其中可包含:文件头长度、字段名、字段类型、字段长度、每条记录长度、密钥等,然后将记录按文件头规定的格式加密后,通过低级文件函数fwrite()顺序写入文件中。调用时,再用低级文件函数fread()从自定义的文件中读取文件头的内容。用VFP提供的低级文件函数对数据库中的表文件(.dbf)进行加密,加密后的文件无法打开、浏览,从而起到保密数据的作用。使用时,再执行相应解密程序即可将加密的表还原。
例如表文件czr.dbf,记录内容为进入某系统时合法的用户名和口令,下面的代码即是对其进行加密过程。
3 混沌加密算法及实现
3.1 混沌加密原理
混沌是指确定性系统中出现的类似随机的过程,它不同于一般的随机性,是普遍存在的复杂的又有惊人的有序。混沌是人们在对某些非线性动态系统的研究中发现的, 结构复杂,难以分析和预测,但可以提供具有良好的随机性、相关性、复杂性的伪随机序列。初始状态只有微小差别的两个混沌系统在较短的时间后就会产生两组完全不同的、互不相关的混沌序列值。则利用这样的序列就可以进行加密。
混沌序列加密属于序列密码加密,其加密原理与序列密码加密原理相似, 不同在于一般的序列密码是利用移位寄存器为基础的电路来产生伪随机序列作为密钥序列,而混沌序列加密是利用混沌系统迭代产生混沌序列作为密钥序列。混沌序列密码加密方法灵活多变,可以充分利用混沌信号的特性构造复杂的加密函数。
3.2 加密算法描述如下
建立一个数据表(czy.dbf)包括四个字段分别是:操作员(类型是字符型、宽度为8);密码(类型是字符型、宽度为8);qx是操作员权限(类型是数值型、宽度为8、小数位数为0);mm是存放操作员真实密码(类型是字符型、宽度为8)。加密的设计思路是:首先读取操作员姓名,并记录长度获得循环次数,通过LEN()、SUBSTR()、ASC()、ALLTRIM()函数将操作员第一字符转换成十进制ASCⅡ代码。然后以Logistic映射进行随机加密,最后将密文写入文件。下面是主要代码流程图,如图1所示。
图1 混沌加密算法的流程图
3.3 加密算法的实现
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打开数据库,也不能“看到”或无法修改操作员密码。下面是此算法的主要语句:
4 结论
使用混沌加密算法进行加密的用户文件及其结果分别如图2和图3所示。比较两图可以看出,相同的字符使用该算法加密后会显示不同的密文字符。这种加密的密钥是一次一密的,故而是动态的。因此加密算法是比较安全的,可以满足VFP数据库应用系统保密的要求。
图2 未加密的用户数据表
图3 加密的用户数据表
[1] 翁正科.潘广和.FOXPRO应用程序300例[M].北京:清华大学出版社,1995:208-212.
[2] 许芳芳.基于混沌加密算法的VFP文件加密[J].福建电脑,2008:85-87.
[3] 张宪君.在VF中如何给文件加密[J].科技咨询导报,2007,40.