对DBF表进行加密或解密

*前提:被操作的表如果已经打开,一定要先关闭

*---------------------------------------
DBF_JM('temp.dbf',1) &&加密
DBF_JM('temp.dbf',0) &&解密
FUNCTION DBF_JM
 PARAMETERS filename,jm
 IF AT('.',filename)=0 filename=filename+'.dbf' &&处理文件名
 ENDIF
 IF jm=1 &&加密
  handle=FOPEN(filename,2) &&打开文件
  keybite=FREAD(handle,1) &&读表头第一个字节
  =FSEEK(handle,0) &&指针移回第一个字节
  =FWRITE(handle,CHR(ASC(keybite)+2)) &&用比原来高2的ASCII字符改写
  =FCLOSE(handle) &&关闭文件 ELSE &&解密
  handle=FOPEN(filename,2)
  keybite=FREAD(handle,1)
  =FSEEK(handle,0)
  =FWRITE(handle,CHR(ASC(keybite)-2)) &&用比原来低2的ASCII字符改写
  =FCLOSE(handle)
 ENDIF
ENDFUNC
*---------------------------------------
FUNCTION DBF_JieMi &&解密
 PARAMETERS lfile
 lfn=ALLTRIM(lfile)
 lh=FOPEN(lfn,12)
 =FSEEK(lh,0,0)
 =FSEEK(lh,8)
 lk1=FREAD(lh,1)
 lk2=FREAD(lh,1)
 =FSEEK(lh,0,0)
 =FSEEK(lh,8)
 =FWRITE(lh,CHR(ASC(lk1)-2),1)
 =FWRITE(lh,CHR(ASC(lk2)-2),1)
 =FCLOSE(lh)
 RETURN
ENDFUNC
FUNCTION DBF_JiaMi &&加密
 PARAMETERS lfile
 lfn=ALLTRIM(lfile)
 lh=FOPEN(lfn,12)
 =FSEEK(lh,0,0)
 =FSEEK(lh,8)
 lk1=FREAD(lh,1)
 lk2=FREAD(lh,1)
 =FSEEK(lh,0,0)
 =FSEEK(lh,8)
 =FWRITE(lh,CHR(ASC(lk1)+2),1)
 =FWRITE(lh,CHR(ASC(lk2)+2),1)
 =FCLOSE(lh)
 RETURN
ENDFUNC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值