使用方法:
DBF_JM('temp.dbf',1) &&加密
DBF_JM('temp.dbf',0) &&解密
注意:
被操作的表如果已经打开,一定要先关闭
UNCTION 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
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