導航:首頁 > 文檔加密 > vfpprg代碼加密

vfpprg代碼加密

發布時間:2022-05-16 13:48:01

① 如何對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

閱讀全文

與vfpprg代碼加密相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:769
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:844
安卓怎麼下載60秒生存 瀏覽:803
外向式文件夾 瀏覽:240
dospdf 瀏覽:431
怎麼修改騰訊雲伺服器ip 瀏覽:392
pdftoeps 瀏覽:496
為什麼鴻蒙那麼像安卓 瀏覽:736
安卓手機怎麼拍自媒體視頻 瀏覽:186
單片機各個中斷的初始化 瀏覽:724
python怎麼集合元素 瀏覽:481
python逐條解讀 瀏覽:833
基於單片機的濕度控制 瀏覽:499
ios如何使用安卓的帳號 瀏覽:883
程序員公園采訪 瀏覽:812
程序員實戰教程要多長時間 瀏覽:979
企業數據加密技巧 瀏覽:135
租雲伺服器開發 瀏覽:814
程序員告白媽媽不同意 瀏覽:337
攻城掠地怎麼查看伺服器 瀏覽:601