CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

在VFP中实现可靠的随机密码和多用户权限控制

作者: 蔡文水,  出处:软件屋, 责任编辑: 武扬, 
2005-04-28 17:00
  在应用系统中,经常使用口令实现对系统操作权限的控制,常规的方法是在进入系统时提示操作者输入一个字符串口令。

  在应用系统中,经常使用口令实现对系统操作权限的控制,常规的方法是在进入系统时提示操作者输入一个字符串口令。这种口令的设置方法多种多样,有的是将固定口令密码写在程序里,系统开始要求操作者输入该密码,正确方可进入,这种方法的缺点是密码不能改变,且全系统只有一个。还有一种方法是将操作者输入的密码通过加密,转换为加密伪码存储数据库中,但这种方法的密码和伪码仍有显式的对应关系,容易被破解。本文介绍一种在VFP中用随机伪码存库的方法实现简单可靠的系统加密,并用此方法实现一个应用系统的多用户权限控制,这种方法的特点是实现简单,加密可靠,不易破解,可将一个1至7位的用户密码转换为20位的随机伪码,且每次重新设定密码时所产生的伪码都不相同,通过变换生成的20位伪码没有任何规律性,即使从数据库中擦除伪码也无法进入系统,从而实现了可靠的密码权限控制。

  一、可靠的随机伪码存库

  从用户密码到存库的随机伪码之间的变换由两个函数完成,一个是加密函数,一个是解密函数。加密函数的思想是对用户密码(真码)进行复杂化、隐蔽化处理,也就是将真码淹没在20位伪码中,加密函数如下:

  FUNC MAZH1
  PARA ZMZ
  ZMZ=VAL(ZMZ)
  N1=RAND()*10^9
  IF N1<=999999999
  N1=N1+10^9
  ENDI
  N1=INT(N1)
  C1=STR(N1+ZMZ)+STR(N1)
  C2=SUBS(C1,5,20)+SUBS(C1,1,4)
  P1=''
  P2=''
  FOR II=1 TO 10
  P1=P1+SUBS(C2,2*II-1,1)
  P2=P2+SUBS(C2,2*II,1)
  ENDFOR
  WMZ=P1+P2
  RETU WMZ

  若真码为:1234567,则伪码为:64915302152868193982,无论真码是一位还是相同多位,伪码总是具有同样的不确定性和复杂性,所以若想通过简化真码来分析伪码是不可能的。

  解码函数是将数据库中存放的伪码转换成原用户密码,其代码如下:

  FUNC MAZH2
  PARA WMZ
  PP=''
  FOR II=1 TO 10
  PP=PP+SUBS(WMZ,II,1)+SUBS(WMZ,II+10,1)
  ENDFOR
  DD=SUBS(PP,17,4)+SUBS(PP,1,16)
  M1=SUBS(DD,1,10)
  M2=SUBS(DD,11,10)
  ZMZ=INT(VAL(M1)-VAL(M2))
  RETU ZMZ

  由于提交的系统全是编辑的,非法者是无法得到密码转换函数中的信息的,所以解密方法是不易被发现的。

共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i