随着电子商务逐渐越来越多的应用,信息的安全问题越来越受到重视,为了防止无关人员浏览、修改、破坏数据库,最常用的方法就是给VFP平台数据库应用系统加上密码,并对密码进行加密。
一、数据加密技术
数据加密技术通常使用两种形式的加密技术,即对称加密和公钥(或非对称)加密。对称加密的以DES的算法为典型代表,非对称加密通常以RSA算法为代表,而在VFP平台上,通常采用以下几种加密方法。
1、固定密码
即系统中只有一个密码,并且是同定不变的,其常用于Foxpro平台,用IIF和Accept语句来实现,密码在程序设计时源程序中实现,所以如果以后要修改其密码,就得改变其源程序或再编写一段子程序来修改密码,从而导致其保密性和可变性相当欠缺。
2、简单加密的固定密码
即将密码进行简化的加密,但密码仍是固定不变的,其实现方法有两种:“钥匙盘法”和“变换法”。 “钥匙盘法”即首先将密码或密码用户名存放在一张可移动磁盘上,使用时把可移动磁盘插入计算机,系统读取其中密码或密码和用户名,这种方法保密性稍好一些,但方便性就欠缺。磁盘易坏,易感染病毒,“变换法”就是通过借助CAR()函数对密码进行互换,加密语句是:PSD=CHR (65) +CHR (66)+
CHR (67)+“9999”,换算后密码可避免被直接发现,若上述两种方法混合应用,保密性就更高。
3、简单加密变化的密码
即利用时间函数来加密的算法,其核心语句是:
X=date()
PS2=Subs (cdow (x) ,1,3),manage—
Cdow()是返回字符型星期几的函数,用户可根据今天是星期几,将星期的前3个英文字母与“manage" 一起输入,构成变化的密码,达到稍强的保密性。
4、随机伪码加密法
即将1至7位的用户密码转换为20位的随机伪码,且每次重新设定密码时所产生的伪码都不相同,通过变换生成的20位伪码及所有任何规律性即便从数据库中擦出伪码也无法进入系统,从而实现了可靠的密码权限控制。
从用户密码到存库的随机伪码之间的变换由两个函数完成,一个是加密函数,一个是解密函数。加密函数的思想是对用户密码(真码)进行复杂化、隐蔽化处理,也就是将真码淹没在20位伪码中,加密函数如下:
FUNC MAZHl
PARA ZMZ
ZMZ;VAL (ZMZ)
NI=RAND ( ) *10^9
IF Nl<~99999999
N1=Nl+10^9
ENDI
Nl=INT (NI)
CI=STR (N1+ZMZ) +STR (NI)
(CI,l,4)
Pl=”
P2=”
FOR K=1 T0 10
Pl=PI+SUBS (C2, 2*K;I,1)
P2=P2+SUBS (C2,2.K l)
ENDFOR
WMZ;PI+P2
RETU WMZ
若真码为:1234567,则伪码为:64915302152868193982,无论真码是一位还是相同多位r伪码总是具有同样的不确定性和复杂性,所以若想通过简化真码来分析伪码是不可能的。
解码函数是将数据库中存放的伪码转换成原用户密码,其代码如下:
FUNC MAZH2
PARA WMZ
PP="
FOR K=l TO lO
PP~PP+SUBS (WMZ, K, l) +SUBS (WMZ, K+lO,l)
ENDFOR
DD--SUBS (PP, 17,4) +SUBS (PP, 1,16)
MI=SUBS (DD, l,lO)
M2=SUBS (DD, 11,10)
ZMZ=INT (VAL (MI) -VAL (M2))
RETU ZMZ
由于提交的系统全是编辑的,非法者是无法得到密码转换函数中的信息的,所以解密方法是不易被发现的。
小知识之VFP
Visual FoxPro ,是Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows之后,得来的应用程序开发软件,主要用于开发数据管理与运算等方面的软件。VFP是Microsoft公司推出的最新可视化数据库管理系统平台,是功能特别强大的32位数据库管理系统。它提供了功能完备的工具、极其友好的用户界面、简单的数据存取方式、独一无二的跨平台技术,具有良好的兼容性、真正的可编译性和较强的安全性,是目前最快捷、最实用的数据库管理系统软件之一。