用隐形字符制作加密口令

Author: 郭会清 Date: 1998年 第21期 12版

  在FoxPro数据库管理系统中,最重要的莫过于程序的保密问题了。为了防止无关人员访问数据库,人们设计了各种加密口令,但它们都有几个共同的问题:一是他人可通过阅读源程序或其他方式巧取口令(即使.EXE文件也可反编译为.PRG文件);二是若口令放在口令盘上,软盘易损坏,甚至丢失。那么有没有一个更为稳妥的方法呢?答案是肯定的。笔者利用FoxPro 2.5B for DOS编写了如下一个小程序,只要把它放在系统主程序之前,将使系统保密程度大大提高:
  set talk off
  set color to /n
  clear
  set color to w/r
  define window lockwin from 5,5 to 15,72 title "口令检测窗口"double
  acti window lockwin
  @2,10 say "请操作员输入正确的口令,输完后回车:"
  set color to /w
  @2,45 say space(5)
  @2,45 say ' '
  set color to w/r
  n=1
  do while n<=3
  set cons off
  acce to password
  set cons on
  if password=ltrim(str(val(time())*10))+' '
  &&上行单引号内的空格用“Alt+255”进行输入,即按住Alt不放,再依次按小键盘上的255,然后一起放开
  exit
  endif
  if n=3
  clear
  wait space(14)+"对不起,您无权使用本系统,按任意键退出!"
  clear
  quit
  endif
  @n+3,20 say "口令错,请再次仔细输入!"
  n=n+1
  enddo
  clear all
  &&以下接系统主程序
  从程序上我们可以看出,口令password通过取时间函数而获得,其值为时钟点数(小时)的10倍,并随时间的移动而不断变化;其后的隐形空格使窃看源程序者以为是个真空格而不知所云。至于合法用户,比如现在是23点多,则口令输入230,并按“Alt+255”,即可进入系统。