论文部分内容阅读
摘要:Visual FoxPro具有简单、方便的操作使用特征,是当前数据库管理软件中被运用得最为广泛的一种。在如今的各类桌面数据库应用当中,VF具有较快的数据处理速度,能够在一些基础性的数据存储领域中发挥出重要的作用,但既然作为数据库管理软件,那么其安全性便至关重要,应当得到比其他应用功能更大的重视。为提高VF的安全性,本文基于作者自身的相关工作及学习经验,对VF数据库环境下的数据加密进行了探讨分析。
关键词:Visual FoxPro;数据;加密
中图分类号:TP393文献标识码:A文章编号:1007-9599 (2013) 05-0000-02
1前言
随着数据量的空前巨大,数据库在各行各业中的应用越来越广泛,同时数据库安全问题也越来越受到关注。以VF数据库环境为例,目前大部分数据库都是以明文存储,采用一般的身份验证与识别,无法保障数据库的安全。数据库加密机制在身份验证与识别后使用密码技术对数据库作进一步的保护。数据库加密将数据库中的数据作密文存储。通过数据库加密可以更有效的保护数据库安全。
2数据库加密的功能与特性分析
目前,数据库加密技术已经比较成熟。一般而言,一个行之有效的数据库加密技术主要有以下6个方面的功能和特性。
第一,身份认证。用户除提供用户名、口令外,还必须按照系统安全要求提供其它相关安全凭证。如使用终端密钥;第二,通信加密与完整性保护。有关数据库的访问在网络传输中都被加密,通信一次一密的意义在于防重放、防篡改;第三,数据库数据存储加密与完整性保护。数据库系统采用数据项级存储加密,即数据库中不同的记录、每条记录的不同字段都采用不同的密钥加密,辅以校验措施来保证数据库数据存储的保密性和完整性,防止数据的非授权访问和修改;第四,数据库加密设置。系统中可以选择需要加密的数据库列,以便于用户选择那些敏感信息进行加密而不是全部数据都加密。只对用户的敏感数据加密可以提高数据库访问速度。这样有利于用户在效率与安全性之间进行自主选择;第五,多级密钥管理模式。主密钥和主密钥变量保存在安全区域,二级密钥受主密钥变量加密保护,数据加密的密钥存储或传输时利用二级密钥加密保护,使用时受主密钥保护;第六,安全备份。系统提供数据库明文备份功能和密钥备份功能。
3传统的数据加密
3.1固定密码
固定密码是系统中唯一的一个密码,既然是“固定”的,那么它就是不能够改变的,它主要是通过IF语句以及ACCEPT语句来实现相关的授权功能1。这个密码在程序设计的过程当中便被固定了下来,在后期的使用过程当中难以进行修改,否则便只能对源程序进行重新编写,或是用一段子程序来对密码进行修改,总之其灵活性与安全性都并不太如人意。
3.2固定密码简单加密
顾名思义,固定密码简单加密,既是对原有的固定密码进行一次加密,这种加密方式比固定密码的安全性略高,但密码本身的值不变,加密也并不复杂。这种加密可通过两种方式来实现,一种是转换法,另一种是钥匙法。
所谓的转换法是通过对固定密码本身进行一次运算,使密码值产生固定的变化,通常使用以下语言来完成:
PASSWORD=CHR(65)+CHR(66)+CHR(67)+“0”。在該语句中所用到的CHR()函数是用来进行返回以数值表达式值为编码的字符,而符号“+”则用作字符串连接,文中的语句进行转换过后,PASSWORD的值为“ABC0”,就是这种简单的密码加密,就能够起到密码保护的作用,在一定程度上提高安全性。所谓的钥匙法是通过将密码存储在一个特定的设备上,如果需要使用密码,就把该“钥匙设备”接入系统,使系统对密码进行读取、审核。
3.3可变密码
可变密码指的是密码自身能够进行规律性的变化,它可以通过很多方法来实现,比如随机发、时间法、位移法以及转换法等2。
首先说转换法,它首先要对原有的密码进行一次计算,将其转换成为加密后的密码,在要对密码进行使用的时候,就对加密后的密码进行一次倒序的计算,得出密码本身。
时间法是通过调用DATE()函数以及CDOW()函数来进行加密的算法,这种加密密码的值是由一个时间以及一个字符构成,它可以在每天变换不同的密码,它主要通过以下语句来完成。
VALUE1=DATE()
PASSWORD=SUBSTR(CDOW(VALUE1),1,3)+“VFPSYSTEM”
在该语句中,DATE()函数获取了当前的日期,然后CDOW()函数根据了当前的日期求出了今天是星期几,并通过SUBSTR()函数截取字符串的一部分,最后通过“+”连接字符串“VFPSYSTEM”组成当日的密码。操作人员应根据日期的不同来进行密码输入,且一周中的密码不会重复,这又在一定程度上提高了安全性。
总体来说,这些传统的加密方法都还过于简单,安全性与防护性不能达到较高的水平,在当前看来需要高技术的加密技术。
4随机加密
4.1简单的随机加密
这种随机加密算法主要是运用随机函数SECONDS()来完成,该算法需要通过一个随机数序列来和相关的数据进行异或运算,使数据得到加密保护。函数SECONDS()的作用是返回一个随机数,然后将这个随机数同一个字符串进行异或运算,运算结果则作为一个随机的密匙,该密匙的长度完全取决于字符串的长度。有了这个密匙,调用SECONDS()又生成一个新的随机数,用这个随机数与数据进行异或运算后,便能够是数据得到加密处理。
采用这种简单的加密方法,最要有三个优点,第一是它的加密属于“一次一密”这样的形式,第二是数据库数据在进行了加密过后,数据量不会有很大的变动,只是增加了密匙,第三是算法并不太复杂,在具体的实现上较为容易3。
4.2随机伪码加密
通过加密与解密函数能够完成密码与随机伪码之间的转换,将密码转换成为一个随机的伪码就是在对密码进行加密,这个加密过程的主要目的是使密码变得更加的隐蔽、复杂,以增强其安全性。
在VF数据库环境下,采用这种加密方法能够允许多用户权限控制,而且可靠性更强,安全性更高,因为密码通过加密而生成的随机伪码不具备任何的规律性特征,即便从数据库中将伪码删除过后,想进入系统也是不可能的,从而实现可靠性更高、安全性更高的密码权限控制。如果用变量PSD来储存密码,用变量WM来存储伪码,那么大致的加密过程主要通过以下语句来完成。
N1 = RAND( ) * 10^9
IF N1 < = 999999999
N1 = N1 + 10^9
ENDIF
N1 = INT( N1)
C1 = STR( N1 + PSD) + STR( N1)
C2 = SUBS( C1,5,20) + SUBS( C1,1,4)
P1 = “”
P2 = “”
FOR i = 1 TO 10
P1 = P1 + SUBS( C2,2* i - 1,1)
P2 = P2 + SUBS( C2,2* i,1)
ENDFOR
WM = P1 + P2
4.3多随机数加密算法
多随机数加密算法是用多个密钥进行加密的技术.采用多随机数加密时,对于原码字符的ASCII值,都产生一个随机数与之运算,生成另外一个0至255之间的数,然后再将其以3个字符方式与密钥合并成4个字符生成伪码,最后将全部字符生成的这样的伪码联结起来形成对应的加密数字序列,并在之前加上长度,加密后的数据长度是原数的4倍多,把其放在字段中保存.其中,长度存放的时候也用了4个字符,并加入随机数,提高数据加密的程度.当打开表的时候,用加密函数将原码转换成伪码进行存贮,从表中无法直接看到原码,只有程序才能动态看到原码,保密性很强。假设STR1是需要加密的字符串,多随机数加密算法的主要代码如下。
R = INT( RAND( - 10) * 1000)
L = LEN(STR1)
V1= RIGHT( STR( R) + IIF( L > 9,STR( L,2) ,“0”+ STR( L,1) ) ,4)
R = INT( RAND( ) * 10)
FOR i = 1 TO LEN(STR1)
V2 = ASC( SUBS(STR1,i,1) ) - R
V3 = IF(V2 > 99,STR(V2,3) ,“0”+ STR(V2,2) )
V1= V1+ STR( R,1) + V3
R = INT( RAND( ) * 10)
ENDFOR
如果要进行解密,则采用相反的方法,每个字符都要与这个字符有关的随机数运算,由于需要用到多个随机密钥,安全性、可靠性又有较大提高。
5结束语
作为一款集成了编程语言的数据库管理系统,它有着各种的作用优势,包括它的加密技术。但是,我们不能忘记加密技术固有的局限性。从理论上说,只要拥有足够多的物力、财力、人力以及百折不挠的毅力,任何加密算法均可以被破译。所以我们可以这样认为:目前,人的智慧还不能设计出一种加密算法,使其不能被破译。因此,在使用好数据库加密技术的同时,还应当注意做好其他相关的加密工作,这样才能确保数据信息的安全。
参考文献:
[1]李萍.数据库加密技术研究[J].忻州师范学院学报,2010(05):43-45.
[2]徐珂.基于VF环境的数据库加密技术[J].广西轻工业,2007(04):67-68.
[3]毕文才.Visual Foxpro数据库的加密[J].电脑开发与应用,2008(08):77-79.
[4]李庆森.浅谈Visual FoxPro数据库加密技术及其应用[J].计算机光盘软件与应用,2012(20):106-111.
关键词:Visual FoxPro;数据;加密
中图分类号:TP393文献标识码:A文章编号:1007-9599 (2013) 05-0000-02
1前言
随着数据量的空前巨大,数据库在各行各业中的应用越来越广泛,同时数据库安全问题也越来越受到关注。以VF数据库环境为例,目前大部分数据库都是以明文存储,采用一般的身份验证与识别,无法保障数据库的安全。数据库加密机制在身份验证与识别后使用密码技术对数据库作进一步的保护。数据库加密将数据库中的数据作密文存储。通过数据库加密可以更有效的保护数据库安全。
2数据库加密的功能与特性分析
目前,数据库加密技术已经比较成熟。一般而言,一个行之有效的数据库加密技术主要有以下6个方面的功能和特性。
第一,身份认证。用户除提供用户名、口令外,还必须按照系统安全要求提供其它相关安全凭证。如使用终端密钥;第二,通信加密与完整性保护。有关数据库的访问在网络传输中都被加密,通信一次一密的意义在于防重放、防篡改;第三,数据库数据存储加密与完整性保护。数据库系统采用数据项级存储加密,即数据库中不同的记录、每条记录的不同字段都采用不同的密钥加密,辅以校验措施来保证数据库数据存储的保密性和完整性,防止数据的非授权访问和修改;第四,数据库加密设置。系统中可以选择需要加密的数据库列,以便于用户选择那些敏感信息进行加密而不是全部数据都加密。只对用户的敏感数据加密可以提高数据库访问速度。这样有利于用户在效率与安全性之间进行自主选择;第五,多级密钥管理模式。主密钥和主密钥变量保存在安全区域,二级密钥受主密钥变量加密保护,数据加密的密钥存储或传输时利用二级密钥加密保护,使用时受主密钥保护;第六,安全备份。系统提供数据库明文备份功能和密钥备份功能。
3传统的数据加密
3.1固定密码
固定密码是系统中唯一的一个密码,既然是“固定”的,那么它就是不能够改变的,它主要是通过IF语句以及ACCEPT语句来实现相关的授权功能1。这个密码在程序设计的过程当中便被固定了下来,在后期的使用过程当中难以进行修改,否则便只能对源程序进行重新编写,或是用一段子程序来对密码进行修改,总之其灵活性与安全性都并不太如人意。
3.2固定密码简单加密
顾名思义,固定密码简单加密,既是对原有的固定密码进行一次加密,这种加密方式比固定密码的安全性略高,但密码本身的值不变,加密也并不复杂。这种加密可通过两种方式来实现,一种是转换法,另一种是钥匙法。
所谓的转换法是通过对固定密码本身进行一次运算,使密码值产生固定的变化,通常使用以下语言来完成:
PASSWORD=CHR(65)+CHR(66)+CHR(67)+“0”。在該语句中所用到的CHR()函数是用来进行返回以数值表达式值为编码的字符,而符号“+”则用作字符串连接,文中的语句进行转换过后,PASSWORD的值为“ABC0”,就是这种简单的密码加密,就能够起到密码保护的作用,在一定程度上提高安全性。所谓的钥匙法是通过将密码存储在一个特定的设备上,如果需要使用密码,就把该“钥匙设备”接入系统,使系统对密码进行读取、审核。
3.3可变密码
可变密码指的是密码自身能够进行规律性的变化,它可以通过很多方法来实现,比如随机发、时间法、位移法以及转换法等2。
首先说转换法,它首先要对原有的密码进行一次计算,将其转换成为加密后的密码,在要对密码进行使用的时候,就对加密后的密码进行一次倒序的计算,得出密码本身。
时间法是通过调用DATE()函数以及CDOW()函数来进行加密的算法,这种加密密码的值是由一个时间以及一个字符构成,它可以在每天变换不同的密码,它主要通过以下语句来完成。
VALUE1=DATE()
PASSWORD=SUBSTR(CDOW(VALUE1),1,3)+“VFPSYSTEM”
在该语句中,DATE()函数获取了当前的日期,然后CDOW()函数根据了当前的日期求出了今天是星期几,并通过SUBSTR()函数截取字符串的一部分,最后通过“+”连接字符串“VFPSYSTEM”组成当日的密码。操作人员应根据日期的不同来进行密码输入,且一周中的密码不会重复,这又在一定程度上提高了安全性。
总体来说,这些传统的加密方法都还过于简单,安全性与防护性不能达到较高的水平,在当前看来需要高技术的加密技术。
4随机加密
4.1简单的随机加密
这种随机加密算法主要是运用随机函数SECONDS()来完成,该算法需要通过一个随机数序列来和相关的数据进行异或运算,使数据得到加密保护。函数SECONDS()的作用是返回一个随机数,然后将这个随机数同一个字符串进行异或运算,运算结果则作为一个随机的密匙,该密匙的长度完全取决于字符串的长度。有了这个密匙,调用SECONDS()又生成一个新的随机数,用这个随机数与数据进行异或运算后,便能够是数据得到加密处理。
采用这种简单的加密方法,最要有三个优点,第一是它的加密属于“一次一密”这样的形式,第二是数据库数据在进行了加密过后,数据量不会有很大的变动,只是增加了密匙,第三是算法并不太复杂,在具体的实现上较为容易3。
4.2随机伪码加密
通过加密与解密函数能够完成密码与随机伪码之间的转换,将密码转换成为一个随机的伪码就是在对密码进行加密,这个加密过程的主要目的是使密码变得更加的隐蔽、复杂,以增强其安全性。
在VF数据库环境下,采用这种加密方法能够允许多用户权限控制,而且可靠性更强,安全性更高,因为密码通过加密而生成的随机伪码不具备任何的规律性特征,即便从数据库中将伪码删除过后,想进入系统也是不可能的,从而实现可靠性更高、安全性更高的密码权限控制。如果用变量PSD来储存密码,用变量WM来存储伪码,那么大致的加密过程主要通过以下语句来完成。
N1 = RAND( ) * 10^9
IF N1 < = 999999999
N1 = N1 + 10^9
ENDIF
N1 = INT( N1)
C1 = STR( N1 + PSD) + STR( N1)
C2 = SUBS( C1,5,20) + SUBS( C1,1,4)
P1 = “”
P2 = “”
FOR i = 1 TO 10
P1 = P1 + SUBS( C2,2* i - 1,1)
P2 = P2 + SUBS( C2,2* i,1)
ENDFOR
WM = P1 + P2
4.3多随机数加密算法
多随机数加密算法是用多个密钥进行加密的技术.采用多随机数加密时,对于原码字符的ASCII值,都产生一个随机数与之运算,生成另外一个0至255之间的数,然后再将其以3个字符方式与密钥合并成4个字符生成伪码,最后将全部字符生成的这样的伪码联结起来形成对应的加密数字序列,并在之前加上长度,加密后的数据长度是原数的4倍多,把其放在字段中保存.其中,长度存放的时候也用了4个字符,并加入随机数,提高数据加密的程度.当打开表的时候,用加密函数将原码转换成伪码进行存贮,从表中无法直接看到原码,只有程序才能动态看到原码,保密性很强。假设STR1是需要加密的字符串,多随机数加密算法的主要代码如下。
R = INT( RAND( - 10) * 1000)
L = LEN(STR1)
V1= RIGHT( STR( R) + IIF( L > 9,STR( L,2) ,“0”+ STR( L,1) ) ,4)
R = INT( RAND( ) * 10)
FOR i = 1 TO LEN(STR1)
V2 = ASC( SUBS(STR1,i,1) ) - R
V3 = IF(V2 > 99,STR(V2,3) ,“0”+ STR(V2,2) )
V1= V1+ STR( R,1) + V3
R = INT( RAND( ) * 10)
ENDFOR
如果要进行解密,则采用相反的方法,每个字符都要与这个字符有关的随机数运算,由于需要用到多个随机密钥,安全性、可靠性又有较大提高。
5结束语
作为一款集成了编程语言的数据库管理系统,它有着各种的作用优势,包括它的加密技术。但是,我们不能忘记加密技术固有的局限性。从理论上说,只要拥有足够多的物力、财力、人力以及百折不挠的毅力,任何加密算法均可以被破译。所以我们可以这样认为:目前,人的智慧还不能设计出一种加密算法,使其不能被破译。因此,在使用好数据库加密技术的同时,还应当注意做好其他相关的加密工作,这样才能确保数据信息的安全。
参考文献:
[1]李萍.数据库加密技术研究[J].忻州师范学院学报,2010(05):43-45.
[2]徐珂.基于VF环境的数据库加密技术[J].广西轻工业,2007(04):67-68.
[3]毕文才.Visual Foxpro数据库的加密[J].电脑开发与应用,2008(08):77-79.
[4]李庆森.浅谈Visual FoxPro数据库加密技术及其应用[J].计算机光盘软件与应用,2012(20):106-111.