您的位置:首页 > 其它

对DBF表进行加密或解密

2006-01-17 14:36 155 查看
*前提:被操作的表如果已经打开,一定要先关闭

*---------------------------------------
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: