




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
關于VFP的加密 Vfp語言易學好用,其排序、檢索速度之快,是VB和DELPHI所不及的,但其保密性差是也大家公認的。只要稍為懂一定數(shù)據(jù)庫知識的人,一打開數(shù)據(jù)表,其內容便一目了然,且可任意更改,其保密性和安全性可想而知,這還只是其一。其二:隨著UNFOXpro.exe和Refox7.exe等的出現(xiàn),你辛辛苦苦編的程序,即使編譯成EXE文件,一經UN或RE則你煞費苦心設置的版權符、驗證關、口令、密碼等都如同虛設。 那么Vfp的保密性差的弱點就沒辦法避免嗎?NO !辦法肯定有,這里就先談談“數(shù)據(jù)表的加密問題”,以下就是我的一點粗淺看法,請網友們踴躍討論。 數(shù)據(jù)表加解密常見的有以下兩種方式: 1、直接在磁盤上加解密,即在關閉數(shù)據(jù)表文件后,對已保存在磁盤上的數(shù)據(jù)表文件進行加密,在每次打開數(shù)據(jù)表文件前,先在磁盤上對數(shù)據(jù)表解密,然后再供 Vfp將其打開,其優(yōu)點是加解密容易,一般程序員用Vfp提供的低級文件函數(shù)都能編出加解密程序;缺點是:在WIN的多任務環(huán)境下,很容易取得解密后的數(shù)據(jù),另外一旦系統(tǒng)出錯,還未來得及加密就重新啟動系統(tǒng),那保留在磁盤上的就是解密后的數(shù)據(jù),對保密性能要求稍微高一些的程序員,一般不會采用此方式。 2、在內存中對數(shù)據(jù)表的字段進行加解密,這又可分兩種: A、象遠程續(xù)緣1999年第一期 第8個問題那樣用ASCII碼進行+、-、*、/運算加解密,但這種方法有個缺點即當加或乘時,其值容易大于255(FFH)即大于ASCII碼的最大值,這時無法用CHR()換成字符保存,如對大于255的數(shù)據(jù)不加密,則解密時又會帶來麻煩,即同是254,哪個是加密后的254,哪個是未加密的254?這也就是為何有人問漢字解密后會出現(xiàn)許多同音漢字的原因。B、完全利用Vfp3.0以上版本提供的位操作函數(shù)bitxor()進行加密,該加密方法是C語言及匯編語言常用的加密方法,其原理是將一字節(jié)的8位二進制數(shù)與另一個二進制數(shù)進行異或操作,如用6個以上密匙(口令)進行加密,則在不知其密匙的情況下,是很難解密的。它還有一個優(yōu)點是加解密用同一模塊,即一次執(zhí)行是加密,再次執(zhí)行為解密。以下是加解密例程( 注:調用該過程時,需加密的數(shù)據(jù)表已打開,且為當前工作區(qū)):Procedure jjmgc para Pass &Pass是密匙,設Pass=wjgwkj priv all mccd=len(Pass) &取Pass密匙長度 Sjbzds=fcou() Dime Jmsz(Sjbzds)Go top Scan Scat to Jmsz &讀一條記錄到數(shù)組For I=1 to SjbzdsIf type(Jmsz(i)=C &該字段是字符型嗎Zdcd=len(trim(Jmsz(i) &取字段長度 mc1=1 For x=1 to Zdcd Jm1=asc(subs(Jmsz(I),x,1) &取字段中一個字節(jié) jm2=asc(subs(Pass,mc1,1) &取Pass中一個字節(jié) jmjg= chr(bitxor(jm1,jm2) &將JM1按JM2的值異或 Jmsz(I)=stuf(Jmsz(I),x,1,jmjg) &進行加密替換 mc1=iif(mc1mccd,1,mc1+1) &判斷MC1是否大于mCCD Endf EndiEndf Gath from Jmsz &將加解密的數(shù)據(jù),寫入當前記錄Ends retu 3、在內存中直接對整個數(shù)據(jù)表文件(.DBF)加解密,這也有兩種方法: A、借助現(xiàn)成工具,猶如UCDOS SDK所提供的DBFKey()函數(shù)那樣,與FOX無縫連接,不裝入LoadSdk用USE是無法打開數(shù)據(jù)表的,其優(yōu)點是顯而易見的,但目前在WIN環(huán)境下還找不到這樣的工具,而自己制作其難度大,一般程序員做不到。 B、用Vfp提供的低級文件函數(shù),配合Create Curso -SQL 和 Insert -SQL 命令可實現(xiàn)類似UCDOS SDK所達到的功能,其原理是: 先用低級文件函數(shù)自定義一個文件頭(或著叫文件格式,象BMP、DOC等都有自己的文件格式),在文件頭中可包含:文件頭長度、字段名、字段類型、字段長度、每條記錄長度、密匙(口令字)等,接著將您的記錄按文件頭規(guī)定的格式加密后順序寫入文件中,由于文件格式是您自定義的,所以一般是無法打開讀取的。 在使用時,用低級文件函數(shù)從您自定義的文件中先讀取文件頭的內容,讀到字段名、字段類型、字段長度時,將其用Create Curso -SQL到新建的數(shù)據(jù)表中,讀取記錄后先解密,再用Insert -SQL 到剛建的數(shù)據(jù)表中,然后就可正常使用了,結束使用需存盤時再按上述方法寫入文件。 該方法始終是再內存中進行的,故即使系統(tǒng)出錯,重新啟動系統(tǒng)也無妨。用這種方法加解密確實是在Vfp狀態(tài)下比較好的辦法,但可能對于沒學過C語言或匯編的朋友,對文件格式等不理解,由于代碼較長,無法列出,如網友們有興趣,我可供天堂軟件俱樂部發(fā)放。 以上只是我對Vfp數(shù)據(jù)保密性問題的探討之一 數(shù)據(jù)表加解密,從中大家會看到,如果只對數(shù)據(jù)表加解密,而對執(zhí)行加解密的程序代碼不加密,或用Refox等軟件將您的EXE文件反編譯,那您的加密方法及密匙(口令字),就很容易暴露,其加密的可靠性就有問題,這就是我要講的第二個問題: 如何加密和保護您的程序 如果您有何高見,請到焦點論壇發(fā)表,謝謝! Declare FindW
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流倉儲租賃與環(huán)保污水處理合同
- 地鐵盾構區(qū)間隧道施工風險防控與施工質量責任合同
- 2025年中國尾件市場調查研究報告
- 2025年中國合金鋼圓頭螺釘市場調查研究報告
- 2025年智能一體化電源系統(tǒng)項目發(fā)展計劃
- 2025年空氣清新香片項目合作計劃書
- 2025餐飲技術授權合同樣本
- 2025年電力電子元器件合作協(xié)議書
- 2025海江河聯(lián)運貨物運輸合同登記單
- 2025年煤制烯烴項目建議書
- 2024新版掛名法人免責協(xié)議完整版
- 小學群眾滿意度調查測評表
- (正式版)JTT 1497-2024 公路橋梁塔柱施工平臺及通道安全技術要求
- 高血壓藥物治療的循證醫(yī)學證據(jù)
- python程序設計-說課
- MOOC 一生的健康鍛煉-西南交通大學 中國大學慕課答案
- 示范村建設項目勘察設計后續(xù)服務的安排及保證措施
- 生肖專題-酉雞集
- 施工現(xiàn)場臨時用電安全檢查表
- 2024年九省聯(lián)考英語讀后續(xù)寫(原文解析范文)講義高考英語而二輪復習
- 《鈦合金鍛造講》課件
評論
0/150
提交評論