① 如何对VFP数据库进行加密
用了字符串加密算法了被, 就是将源字符串移位,做与或等运算 最后出来的 你让我们根据一个 密码 加密符 就知道他的加密算法 那是绝对不可能的,神仙也算不出来
② 在vf6.0中enpty.prg是什么
这是用户自己创建的过程文件.
根据名字,好像是加密用的.
因为不是系统自带的, 具体干什么用的,要打开看看里面的代码
③ vfp文件加密
这个好象不是加密,而是登录验证的过程吧。
1.增加个用户表:用户名,密码。
2.制作一个表单:2个text控件。一个控件是username,另一个输入password。
3在cmdbutton中输入验证用户名和密码的代码。
把输入的用户名和密码和数据表中的去比对一下,
一样的就通过,执行下一个表单,不一样的话就继续执行登录表单。
并且可以设成输入密码不对N次就退出系统。
④ 如何让FOXPRO中的DBF文件加密
网上有很多这样的资料,一般由加密解密构成!给你一份资料,你学习学习吧!!!一、加密、解密思路
我们知道数据库文件(.dbf)的数据结构分为三部分:文件头部分、字段描述部分和记录部分。文件头部分的第一个字节是chr(03),这样,就可以
通过修改文件头的第一个字节,使启用正常的打开方式不能浏览数据库内容,达到加密的目的;解密时,将加密数据库文件的文件头第一个字节修改为
正常的数据库文件的第一个字节,即可对它进行正常操作。
二、加密函数
function jiami
parameters dbf_f_name,curs_set
dbf_f_name=upper(alltr(dbf_f_name))
private all
if .not. file(dbf_f_name)
=messagebox(""要加密的文件不存在!!"",0+48,""错误提示"")
else
if ! "".DBF"" $ dbf_f_name
dbf_f_name=dbf_f_name+"".DBF""
endif
hle=FOPEN(dbf_f_name,2)
if hle>0 &&打开文件成功
fbyte=FREAD(hle,1)
=FSEEK(hle,0)
=FWRITE(hle,iif(fbyte==chr(3),chr(0),chr(26)))
&&假如第一个字节是chr(3)则用chr(0),否则用chr(26)写入
=FCLOSE(hle)
else
=messagebox(""试图文件打开错误!!"",0+48,""加密错误提示"")
endif hle>0
endif
return
三、解密函数
function jiemi
parameters dbf_f_name,curs_set
dbf_f_name=upper(alltr(dbf_f_name))
private all
if .not. file(dbf_f_name)
=messagebox(""要解密的文件不存在!!"",0+48,""错误提示"")
else
if ! "".DBF"" $ dbf_f_name
dbf_f_name=dbf_f_name+"".DBF""
endif
hle=FOPEN(dbf_f_name,2)
if hle>0
fbyte=FREAD(hle,1)
=FSEEK(hle,0)
if fbyte=chr(0).or.chr(26)
=FWRITE(hle,iif(fbyte=chr(0),chr(3),chr(245)))
endif
=FCLOSE(hle)
else
=messagebox(""试图文件打开错误!!"",0+48,""解密错误提示"")
endif hhandle>0
endif
return
四、调用加(解)密函数
启动VFP,将加密、解密函数在程序调用之前定义,然后建立表单,在表单中建立两个命令按钮,命名为“加密”、“解密”;
在命令按钮“加密”的click事件中添加代码:“=jiami(""要加密的数据库文件名"",off)”
如果要加密多个数据库文件,则调用几次加密函数即可);
同理在命令按钮“解密”的click事件中添加代码:“=jiemi(""要解密的数据库文件名"",off)”,如果要解密多个加密数据库文件,则多调用几
次解密函数即可。
在表单中,点击“加密”按钮,则执行加密操作,点击“解密”按钮,执行解密操作。
⑤ VFP程序题: 对一个字符串进行加密,其基本算法是对字符串每一个字符
?convert('ABC')
RETURN
FUNCTIONconvert
PARAMETERSs
PRIVATEi,l,t
l=len(s)
t=''
FORi=1tol
t=t+CHR(ASC(SUBSTR(s,i,1))+1)
NEXTi
RETURN(t)
⑥ vfp中.prg程序怎么做怎么用
VFP+SQL主程序编程
这是给初学者推荐一种格式,不一定最好,但它却实能正常运行
* 程序名:main.prg
* 作用:整个系统的入口
* 路径:\你的程序目录\prgs
Set Talk off
Set Escap off
* 开始,程序错误处理
ON ERROR DO Err.PRG With Error(), Message(), Message(1), Program(), Lineno(1)
* 第一步,清理环境**********************
*******
Close All && 关闭所有工作区中打开的数据库、表和索引,并选择工作区 1。
Clear Menus && 从内存中释放所有的内存变量和数组以及所有用户自定义菜单栏、
&& 菜单和窗口的定义。 还从内存中删除所有用 DECLARE-ALL 注册
&& 的外部 Windows 32 位动态链接库 (.DLLS)。
* 关闭系统菜单
* 如果在发出 SET SYSMENU SAVE 命令之后修改了菜单系统,可以通过发出
* SET SYSMENU TO DEFAULT 命令来恢复前面的设置。
Set Sysmenu Save
* 在程序执行期间废止 Visual FoxPro 主菜单栏。
Set Sysmenu Off
Set Sysmenu To
* 第二步,设置环境
* 退出Read时保存数据缓冲区内容
Set Autosave On
* 使用 INSERT、APPEND 和 BROWSE 命令创建新记录时,不将当前记录数据复制到新记录中。
Set Carry Off
* 指定是否可以用在文本框中键入最后一个字符的方法退出文本框。
Set Confirm Off
* 日期不显示世纪部分
Set Century Off
* 设置日期格式为"YY.MM.DD" 格式
Set Date Ansi
* 不显示已经删除的记录
Set Delete On
* 决定能否使用 LOCK ( )或 RLOCK ( ) 锁定多个记录。
Set Multilocks On && 网络编程专用
* 确定 ATLTER TABLE、CREATE TABLE 和 INSERT - SQL 命令如何处理 null 值。
Set Null On
* 指定当字段是空值(NUll)显示的文本为
Set NullDisplay To ''
* 改写已有文件之前不显示对话框
Set Safety Off
* 移去图形状态栏。
Set Status Bar Off
* 第三步,设置你的程序路径
* 设置程序主目录
Public gcMainPath
gcMainPath = Sys(5)+Sys(2003)+"\"
Set Default To &gcMainPath
* 数据目录(本地数据库和表)
Public gcDataPath
gcDataPath =gcMainPath+"Data\"
* 程序目录
Public gcPrgsPath
gcPrgsPath =gcMainPath+"Prgs\"
* 图片目录
Public gcPicsPath
gcPicsPath=gcMainPath + "pics\"
* 表单目录
Public gcFormsPath
gcFormsPath = gcMainPath+"forms\"
* 菜单目录
Public gcMenusPath
gcMenusPath = gcMainPath+"menus\"
* 标签目录
Public gcLabelsPath
gcLabelsPath = gcMainPath+"labels\
* 报表目录
Public gcReportsPath
gcReportsPath =gcMainPath+"Reports\"
* 第四步 初始化键盘
Capslock(.F.)
IMEStatus(0)
Insmode(.T.)
Numlock(.T.)
* 第五步 打开自定义类库、过程文件
Set Classlib To gcMainPath+"vcx\MyVCX.vcx"
Set Procere To gcPrgsPath +"Myproc.prg"
* 设置不显示ODBC登录对话框
SQLSETPROP(0,"DispLogin",3) && 网络专用
* 第六步 声明其他全局变量
* 数据源名称
Public gcDSN
gcDSN = ‘’
* 用户登录名
Public gcUID
gcUID = ‘’
* 用户登录口令
Public gcPWD
gcPWD=‘’
* 当前登录用户姓名(中文)
PUBLIC gcName
gcName=''
* 前后端数据库名
Public gcSQLDatabase,gcFoxDatabase
gcSQLDatabase = ‘资料管理’ && 后端 SQL 数据库
gcFoxDatabase = ‘资料管理’ && 前端 VFP数据库
* 连接句柄
Public gnHandleMaster &&与后端 master 系统数据库的连接句柄
gnHandleMaster = 0
Public gnHandleUser && 与后端用户数据库“gcSQLDatabase ”的连接句柄
gnHandleUser = 0
* 第七步,检查登录帐号
>* 调用登录表单"login.scx"
Do Form gcFormsPath+"login.scx" To gnHandleUser
结果如下图所示
* 如果登录成功 gnHandleUser > 0 表示登录成功,反之,失败
If gnHandleUser <= 0 && 登录失败
Quit && 退出
Endif
* 指定当试图退出VFP时要执行的程序
ON SHUTDOWN DO gcPrgsPath +"FileExit.prg" && 代码如下楼所示。
* 第八步,调用程序主菜单
Do gcMenusPath+"mainmenu.mpr"
* 第九步,显示程序封面,桌面
Do Form gcFormsPath+"title.scx" && 封面
Do Form gcFormsPath+"Desktop.scx" && 桌面,也就是你的程序背景(图片略)
* 第十步 打开或创建本地数据库
cFoxDb=gcDataPath+ gcFoxDatabase + ".dbc"
If Not Files(cFoxDb) && 如果指定的数据库不存在
Create Database &cFoxDb && 创建它
Endif
* 启动事件处理
Read Events
* 将释放当前的 ON SHUTDOWN 命令
ON SHUTDOWN
* 程序:FileExit
* 作用:解决程序运行后,点击主窗口关闭按钮[X]不能退出VFP的问题
If Messagebox('您真要退出本系统吗?',4+32+256,'退出确认')<>6 AND gnHandleUser > 0
Return
Endif
*Do While Txnlevel()>0
* Rollback
*Enddo
Clear Events
ON SHUTDOWN
* 恢复环境
Set Sysmenu To Default
With _Screen
.WindowState=2 &&最大化
.BackColor=Rgb(255,255,255)
.Caption="Microsoft Visual FoxPro"
.Icon =''
Endwith
* 关闭数据库及表
If Used("cfg")
Use In cfg
Endif
If Used("dsn")
Use In dsn
Endif
If Used("uid")
Use In uid
Endif
Close Database All &&关闭所有数据库
Close All &&关闭各种类型的文件,但不关闭命令窗口、调试窗口、帮助、跟踪窗口。
Clear Menus &&释放内存中所有的菜单定义。
Clear Popups &&释放内存中所有用DEFINE POPUP命令创建的菜单定义。
Clear Windows &&释放内存中所有用户自定义窗口的定义,并从VFP主窗口或活动的用户自定义窗口中清除窗口。
Clear &&清屏
Set Safe On
_Screen.Picture=""
=SQLDISCONNECT(0)
Quit
* 程序:错误处理,由梅子提供,未验证。
*****************
err.prg
*****************
PARAMETER NERROR , CMESSAGE , CMESSAGE1 , CPROGRAM , NLINENO
SET TEXTMERGE DELIMITERS to
SET TEXTMERGE ON
SET TEXTMERGE TO ErrorLog.txt ADDITIVE NOSHOW
\---------------------------------------------------------------------
\<<DATE( )>> <<TIME( )>> 错误记录
\程序标题: <<_Screen.Caption>>
\程序开发版本: <<VERSION(1)>>
DO CASE
CASE _SCREEN.WINDOWSTATE = 0
\窗口状态: 普通
CASE _SCREEN.WINDOWSTATE = 1
\窗口状态: 最小化
CASE _SCREEN.WINDOWSTATE = 2
\窗口状态: 最大化
ENDCASE
\窗口可视: <<IIF(_Screen.Visible= .T. , "可见" , "不可见")>>
\窗口集合数: <<_Screen.FormCount>>
\网络机器信息: <<SYS(0)>>
\执行程序: <<JUSTFNAME(SYS(16,1))>>
\执行程序所在目录: <<JUSTPATH(SYS(16,1))>>
\执行程序所在目录磁盘空间: <<DISKSPACE(JUSTDRIVE(SYS(16,1)))>>
\默认目录: <<SYS(5)>><<SYS(2003)>>
\默认目录磁盘空间: <<DISKSPACE(SYS(5))>>
\文件搜寻路径: <<SET("PATH")>>
\系统临时目录: <<SYS(2023)>>
\虚拟内存池大小: <<SYS(1001)>>
\正在使用的工作区: <<Alias()>>
\活动字段: <<VARREAD()>>
IF TYPE('_Screen.ActiveForm.Name') = 'C'
\活动表单: <<_Screen.ActiveForm.Name>>
\表单标题: <<_Screen.ActiveForm.Caption>>
\表单基类: <<_Screen.ActiveForm.BaseClass>>
\表单派生: <<_Screen.ActiveForm.Class>>
\表单派生库: <<_Screen.ActiveForm.ClassLibrary>>
\表单位置: <<SYS(1271, _Screen.ActiveForm)>>
ELSE
\无活动表单
ENDIF
IF TYPE('_Screen.ActiveForm.ActiveControl') = 'O'
\活动控制: <<_Screen.ActiveForm.ActiveControl.Name>>
IF TYPE('_Screen.ActiveForm.ActiveControl.Caption') = 'C'
\控制标题: <<_Screen.ActiveForm.ActiveControl.Caption>>
ENDIF
\控件基类: <<_Screen.ActiveForm.ActiveControl.BaseClass>>
\控件派生: <<_Screen.ActiveForm.ActiveControl.Class>>
\控件派生库: <<_Screen.ActiveForm.ActiveControl.ClassLibrary>>
\控件位置: <<SYS(1271, _Screen.ActiveForm.ActiveControl)>>
ELSE
\无活动控制
ENDIF
\错误代号: <<nError>>
\错误信息: <<cMessage>>
\产生错误的位置: <<cProgram>>
\所在行号: <<nLineno>>
\产生错误的代码: <<cMessage1>>
\输出内存使用情况 -> MemoryLog.txt
\输出工作环境到 -> StatusLog.txt
SET SAFETY OFF
DISPLAY MEMORY TO File MemoryLog.txt NOCONSOLE
DISPLAY STATUS TO File StatusLog.txt NOCONSOLE
\---------------------------------------------------------------------
SET TEXTMERGE TO
Nvalue = ;
MESSAGEBOX('程序发生错误!详细信息如下:' + CHR(13) + CHR(13) + '错误代号: ' + ;
LTRIM(STR(NERROR)) + ;
CHR(13) + ;
'错误行号: ' + ;
LTRIM(STR(NLINENO)) + ;
CHR(13) + ;
'错误信息: ' + ;
CMESSAGE + ;
CHR(13) + ;
'错误代码: ' + ;
CMESSAGE1 + ;
CHR(13) + ;
'错误位置: ' + ;
CPROGRAM + ;
CHR(13) + ;
CHR(13) + ;
'该错误已经记录到文件:Errorlog.txt,Memorylog.txt,Statuslog.txt。',50,'信息')
DO CASE
CASE Nvalue = 3
QUIT
CASE Nvalue = 4
RETRY
CASE Nvalue = 5
RETURN
ENDCASE
⑦ vfp软件加密
是的,只加密exe文件就行。
VFP的,数据库文件不好加密,最好做成c/s的。
⑧ vfp中.exe和prg有什么区别,一个叫可执行程序,一个叫程序
.prg是程序(你写好的代码文件)需经过编译才能运行,也可以说它是一团代码吧,它要运行得通过VFP系统对它进行编译
.exe是可执行程序文件,脱离VF可以直接在操作系统中独立运行的是EXE文件!
⑨ 谁能给一个简单的VFP程序,能进行简单的加密字符串并还原
这个程序用于加密和解密字符,调用时用mima("字符串",.t.)加密,mima("密码字符串",.f.)解密
para dm,mm
*转换成密码*
dm=allt(dm)
IF AT('_',dm)<>0
MESSAGEBOX('密码中不能含有下划线!',16,'警告')
RETURN TO MASTER
ENDIF
IF mm
IF LEN(ALLTRIM(dm))<3
RETURN ''
ENDIF
dm=left(dm+sys(2015)+sys(3),21)
daima=right(time(),2)
for i=1 to 21
asm=asc(subst(dm,i,1))
daima=daima+RIGHT('0'+allt(str(127-asm)),2)
endfor
daima=daima+sys(3)
ELSE
*把密码还原*
daima=''
IF LEN(allt(dm))<>52
RETURN ''
ENDIF
dm=subst(dm,3,len(dm)-10)
for i=1 to len(dm) step 2
asm=val(subst(dm,i,2))
daima=daima+chr(127-asm)
endfor
if at('_',daima)<>0
daima=left(daima,at('_',daima)-1)
endif
endif
retu daima