论文部分内容阅读
[摘要]在VFP编程中,如何给不同环境下的程序及数据库文件加密,从而促进其应用软件的商业化。
[关键词]VF 程序 加密
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0710050-01
传统密码的加密方法,是指在Dbase、FOXBASE、FOXBASE+、FOXPRO2.X 环境下开发的数据库管理系统中使用的方法。传统加密方法种类甚多,但是笔者认为由于Dbase、FOXBASE、FOXBASE+、FOXPRO2.x 编写的程序都是伪编译,很容易被反编译,因此密码也很容易被破解。因此,笔者在这里专门谈谈新型密码的加密方法。
在此方法中其密码值可由设置自行改变,这种方法一般由文件保存密码,且密码经过加密运算。密码的加密算运算方法很多,常用的有:转换法、位移法、时间法、随机法等。
转换法,就是把输入的密码经过转换计算,转换成保存密码,取密码时,再经过逆运算,把密码还原。
不定时密码也是可变密码的一种,是指密码的出现是以随机方式来询问用户。
下面具体介绍一种笔者基VFP6.0写的密码设定方法。其特点是:具有使用登记功能;每人一个密码,并可随时更换;密码经加密 运算,不易被破解。
基本思路如下:首先建立两个数据表(table),一个用来存放口令及对应的用户(称为“口令表”),另一个存放用户登录使用情况(称为“登录表”)。再建立两个窗口表单(form),一个用来检查口令,另一个用来修改口令。接下来定义两个过程(procedure),一个用来给口令加密(“加密过程”),另一个用来给口令解密(“解密过程”)。这个“加密过程”,是把密码经加密运算后存入口令表,而“解密过程”实际上是把输入的密码经加密运算后与口令表内的密码进行比较,并不是解密。为了使密码输入时不被人看见,要对密码输入的文字框的属性做如下工作:进DATA属性栏,把InputMask属性改为:XXXXXX,进LAYOUT属性栏,PassWordChar的属性改为:“*”,这样,输入的密码就不会被别人发现。(在FOXBASE FOXBASE+,FOXPRO2.X 中,常用设置背景颜色与输入密码字符颜色相同的办法来防止别人看 见。)
“ 解密过程”代码如下:
parameter password
pas=""
n1=asc(substr(name,1,1))
&&取姓名的第一个拼音字母,换算成ASCII码
n2= asc(substr(name,2,1)) &&作为加密的键值
n3= asc(substr(name,3,1))
n=int((n1+n2+n3)/3)
for i=1 to len(trim(password))
&&使用BITXOR()函数对密码进行解密
tempchr=bitxor(asc(substr(password,i,1)),n)
pas=pas+chr(tempchr)
endfor
locate for klk.user_id=name
&&与口令表内的与姓名相对应的口令进行比较
if (klk.key< >pas) and (password< >"hg")
result=.f.
else
result=.t.
endif
return result
BITXOR()函数是vfp特有的函数,它将函数的两个参数转换成二进制数,并且执行“与”操作,返回一个十进制的结果。用它来进行加密运算,保密性强。加上密码键值n(取姓名的第一个拼音字母,经求和,再取平均值,再取整运算,换算成ASCII码),得到每人一个的密码。
该“过程”的定义方法如下:在定义检查密码的窗口(form)的编辑状态下,用鼠标点菜form,选“new method”,键“过程”名。然后双击正在编辑的窗口(form),然后进入"过程"的编辑状态,写入如上代码。加密过程是解密过程的逆运算,代码如下:
parameter password
pas=""
for i=1 to len(trim(password))
n1=asc(substr(name,1,1))
n2= asc(substr(name,2,1))
n3= asc(substr(name,3,1))
n=int((n1+n2+n3)/3)
tempchr=bitxor(asc(substr(password,i,1)),n)
pas=pas+chr(tempchr)
endfor
replace key with pas
检查密码的思路是:先到输入姓名的文字框内取姓名,再到口令表内查找姓名,如果找不到姓名,返回消息窗口“您不是指定用户,请与系统管理员联系!”,系统退出;如果找到了用户姓名,则继续进行,把输入的口令和姓名送到解密“过程”中进行运算,解密“过程”将其解密,并与口令表内的数据进行比较,如果不正确,开始计数,要求重新输入密码,三次不正确,退出系统。如果正确,释放当前窗口,进入系统。
参考文献:
[1]王义,硬件加密系统研究与应用[D],北京邮电大学,2006年.
[2]徐海涛,文件加密我轻松《私人磁盘》试用手记[J],微电脑世界,2005年04期.
[关键词]VF 程序 加密
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0710050-01
传统密码的加密方法,是指在Dbase、FOXBASE、FOXBASE+、FOXPRO2.X 环境下开发的数据库管理系统中使用的方法。传统加密方法种类甚多,但是笔者认为由于Dbase、FOXBASE、FOXBASE+、FOXPRO2.x 编写的程序都是伪编译,很容易被反编译,因此密码也很容易被破解。因此,笔者在这里专门谈谈新型密码的加密方法。
在此方法中其密码值可由设置自行改变,这种方法一般由文件保存密码,且密码经过加密运算。密码的加密算运算方法很多,常用的有:转换法、位移法、时间法、随机法等。
转换法,就是把输入的密码经过转换计算,转换成保存密码,取密码时,再经过逆运算,把密码还原。
不定时密码也是可变密码的一种,是指密码的出现是以随机方式来询问用户。
下面具体介绍一种笔者基VFP6.0写的密码设定方法。其特点是:具有使用登记功能;每人一个密码,并可随时更换;密码经加密 运算,不易被破解。
基本思路如下:首先建立两个数据表(table),一个用来存放口令及对应的用户(称为“口令表”),另一个存放用户登录使用情况(称为“登录表”)。再建立两个窗口表单(form),一个用来检查口令,另一个用来修改口令。接下来定义两个过程(procedure),一个用来给口令加密(“加密过程”),另一个用来给口令解密(“解密过程”)。这个“加密过程”,是把密码经加密运算后存入口令表,而“解密过程”实际上是把输入的密码经加密运算后与口令表内的密码进行比较,并不是解密。为了使密码输入时不被人看见,要对密码输入的文字框的属性做如下工作:进DATA属性栏,把InputMask属性改为:XXXXXX,进LAYOUT属性栏,PassWordChar的属性改为:“*”,这样,输入的密码就不会被别人发现。(在FOXBASE FOXBASE+,FOXPRO2.X 中,常用设置背景颜色与输入密码字符颜色相同的办法来防止别人看 见。)
“ 解密过程”代码如下:
parameter password
pas=""
n1=asc(substr(name,1,1))
&&取姓名的第一个拼音字母,换算成ASCII码
n2= asc(substr(name,2,1)) &&作为加密的键值
n3= asc(substr(name,3,1))
n=int((n1+n2+n3)/3)
for i=1 to len(trim(password))
&&使用BITXOR()函数对密码进行解密
tempchr=bitxor(asc(substr(password,i,1)),n)
pas=pas+chr(tempchr)
endfor
locate for klk.user_id=name
&&与口令表内的与姓名相对应的口令进行比较
if (klk.key< >pas) and (password< >"hg")
result=.f.
else
result=.t.
endif
return result
BITXOR()函数是vfp特有的函数,它将函数的两个参数转换成二进制数,并且执行“与”操作,返回一个十进制的结果。用它来进行加密运算,保密性强。加上密码键值n(取姓名的第一个拼音字母,经求和,再取平均值,再取整运算,换算成ASCII码),得到每人一个的密码。
该“过程”的定义方法如下:在定义检查密码的窗口(form)的编辑状态下,用鼠标点菜form,选“new method”,键“过程”名。然后双击正在编辑的窗口(form),然后进入"过程"的编辑状态,写入如上代码。加密过程是解密过程的逆运算,代码如下:
parameter password
pas=""
for i=1 to len(trim(password))
n1=asc(substr(name,1,1))
n2= asc(substr(name,2,1))
n3= asc(substr(name,3,1))
n=int((n1+n2+n3)/3)
tempchr=bitxor(asc(substr(password,i,1)),n)
pas=pas+chr(tempchr)
endfor
replace key with pas
检查密码的思路是:先到输入姓名的文字框内取姓名,再到口令表内查找姓名,如果找不到姓名,返回消息窗口“您不是指定用户,请与系统管理员联系!”,系统退出;如果找到了用户姓名,则继续进行,把输入的口令和姓名送到解密“过程”中进行运算,解密“过程”将其解密,并与口令表内的数据进行比较,如果不正确,开始计数,要求重新输入密码,三次不正确,退出系统。如果正确,释放当前窗口,进入系统。
参考文献:
[1]王义,硬件加密系统研究与应用[D],北京邮电大学,2006年.
[2]徐海涛,文件加密我轻松《私人磁盘》试用手记[J],微电脑世界,2005年04期.