高级密码处理 www. 时间 : 2007-06-17 作者:佚名 编辑:本站 点击: 261 [ 评论 ] - - 密码一般可以分为如下几种: (1)保护能力较低的密码 (2)可变密码 (3)不定时的密码 我们先来介绍第一种方法,保护能力较低的密码是指固定密码值的方法,比较落后,如下例: count=0 m.pass=sapce(7) do while count<3 count=count+1 @1,1 get m.pass picture"XXXXXXX" read
if m.pass<>"CHINESE" wait windows"密码输入错误" loop else wait windows"通过" exit endif enddo 对于可变密码一般使用置换法,如下例: ---------------------------------------------------------------------- 字符 |ABCDEFGHIJKLMNOPQRSTUVWXYZ 置换表 |QPWORIEUTYALSDJFHGMZNXBCV ---------------------------------------------------------------------- 密码 |FOXPRO 置换后 |IDBJHD ---------------------------------------------------------------------- 这种方法虽然容易破密,但是有一定的难度。 对于不定时密码,工作方式是:随即取得一个1-5的数,并声明一个变量以便记数,在每一个过程或函数执行前,累加该变量的值,当变量值等于随机值的时候,即调用密码输入过程,这种方法虽然隐秘,但是在程序中实用性不是很大,所以我们不进行细致的介绍,下面我们介绍一种高级的密码处理方式,也比较简单使用。 高级密码处理。前面我们已经介绍过置换法,高级密码则是使用计算的方式改变密码的样式,A可能变成:而B可能变成@,如下例: 加密: tempstr='' for i=1 to len(trim(password)) tempchr=bitxor(asc(subs(password,i,1)),123) tempstr=tempstr+chr(tempchr) endfor replace passkey with tempstr 解密: tempstr='' for i=1 to len(trim(password)) tempchr=bitxor(asc(subs(password,i,1)),123) tempstr=tempstr+chr(tempchr) endfor if passkey #tempstr "密码错误" endif 在这个程序里面调用了BITXOR函数,我们现在介绍一下这个函数的使用方法:
作用: 返回两个数值型数值按位进行异或运算的结果。 语法 BITXOR(nExpression1, nExpression2)
参数 nExpression1, nExpression2
指定要按位进行异或运算的两个数值。如果 nExpression1 和 nExpression2 不是整数,那 么它们在位操作之前,将转换成整数。
返回值类型 数值型 说明 BITXOR( ) 函数比较 nExpression1 和 nExpression2 的每个对应位。如果一个数的某一位为 0,并且另一个数相应位为 1,那么操作结果的对应位等于 1;否则等于 0。 下表列出对 nExpression1 和 nExpression2 按位进行异或运算的结果:
nExpression1 位 nExpression2 位 结果位 0 0 0 0 1 1 1 0 1 1 1 0 对于在VFP中输入密码时显示的*,你可以在TEXT的passwordCHR中,输入*,就可以了。
文章出处:飞诺网(www.):http://www./course/3_program/rfoxpro/2007617/62641.html
|