基于DXF格式CAD文檔保護(hù)系統(tǒng)置亂模塊的設(shè)計與實現(xiàn)畢業(yè)論文_第1頁
基于DXF格式CAD文檔保護(hù)系統(tǒng)置亂模塊的設(shè)計與實現(xiàn)畢業(yè)論文_第2頁
基于DXF格式CAD文檔保護(hù)系統(tǒng)置亂模塊的設(shè)計與實現(xiàn)畢業(yè)論文_第3頁
基于DXF格式CAD文檔保護(hù)系統(tǒng)置亂模塊的設(shè)計與實現(xiàn)畢業(yè)論文_第4頁
基于DXF格式CAD文檔保護(hù)系統(tǒng)置亂模塊的設(shè)計與實現(xiàn)畢業(yè)論文_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘 要作為一款優(yōu)秀的工業(yè)制圖軟件,AutoCAD得到了極為廣泛的應(yīng)用。但是隨著AutoCAD的廣泛應(yīng)用,許多問題也逐漸凸現(xiàn)出來,其中尤為突出的就是文檔保護(hù)問題。眾所周知,每一工程圖紙都是工程師們的智慧結(jié)晶,關(guān)系了公司的最直接利益。每個公司都把工程圖紙當(dāng)作最的文件,一旦泄露到競爭對手手中,將給公司帶來無法估計的損失。AutoDesk公司提供了一個優(yōu)秀的二次開發(fā)工具ObjectARX,通過這個工具我們可以極為方便地開發(fā)出AutoCAD軟件的插件。這為我們開發(fā)出一個文檔保護(hù)工具提供了可能性。本文所論述CAD文檔保護(hù)系統(tǒng)置亂模塊,就是通過對CAD文檔中各種實體進(jìn)行一種可逆變換,令CAD文檔脫離特定環(huán)境

2、后可以隱藏其真實信息,從而起到保護(hù)作用。本文的重點在于如何分割實體,針對不同的實體設(shè)計出相應(yīng)的加密算法。本文還涉與到對用戶行為的監(jiān)控,軟件與AutoCAD軟件的兼容性問題等問題的研究。關(guān)鍵詞CAD;文檔保護(hù);置亂;加密算法AbstractAs a good industrial mapping software, AutoCAD has been extremely wide range of applications. However, with the extensive application of AutoCAD, many of the problems highlighted by

3、 gradually, which is particularly striking is that the document protection issues. As we all know, every one of the drawings are the wisdom of engineers, and the company's most direct interest. Engineering drawings of each company regarded as the most confidential documents, once leaked to the h

4、ands of competitors, the company will not able to estimate the losses.AutoDesk has provided an excellent secondary development tools ObjectARX, through this tool we can very easily develop a plug-in AutoCAD software. We developed this as a tool for the protection of the document provided a possibili

5、ty.This paper discussed by the CAD document protection system scrambling modules, the CAD is to document the various entities in a reversible transformation, the CAD documents from the specific circumstances after the information to hide its real and thus play a protective effect. In this paper, the

6、 focus is how to separate entities, for different entities to design the corresponding encryption algorithm. It also involves monitoring the behavior of users, software and AutoCAD software compatibility problems and other issues of the study.KeywordsCAD Document ProtectionScrambling Encryption algo

7、rithm畢業(yè)設(shè)計(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人重承諾:所呈交的畢業(yè)設(shè)計(論文),是我個人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作與取得的成果。盡我所知,除文中特別加以標(biāo)注和致的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得與其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對本研究提供過幫助和做出過貢獻(xiàn)的個人或集體,均已在文中作了明確的說明并表示了意。作 者 簽 名:日 期:指導(dǎo)教師簽名: 日期:使用授權(quán)說明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(論文)的印刷本和電子版,并

8、提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝 ⒖s印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉咳?。作者簽名: 日 期:學(xué)位論文原創(chuàng)性聲明本人重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的容外,本論文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品。對本文的研究做出重要貢獻(xiàn)的個人和集體,均已在文中以明確方式標(biāo)明。本人完全意識到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期: 年 月 日學(xué)位論文使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子

9、版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名:日期: 年 月 日導(dǎo)師簽名: 日期: 年 月 日指導(dǎo)教師評閱書指導(dǎo)教師評價:一、撰寫(設(shè)計)過程1、學(xué)生在論文(設(shè)計)過程中的治學(xué)態(tài)度、工作精神 優(yōu) 良 中 與格 不與格2、學(xué)生掌握專業(yè)知識、技能的扎實程度 優(yōu) 良 中 與格 不與格3、學(xué)生綜合運用所學(xué)知識和專業(yè)技能分析和解決問題的能力 優(yōu) 良 中 與格 不與格4、研究方法的科學(xué)性;技術(shù)線路的可行性;設(shè)計方案的合理性 優(yōu) 良 中 與格 不與格5、完成畢業(yè)論文(設(shè)計)

10、期間的出勤情況 優(yōu) 良 中 與格 不與格二、論文(設(shè)計)質(zhì)量1、論文(設(shè)計)的整體結(jié)構(gòu)是否符合撰寫規(guī)? 優(yōu) 良 中 與格 不與格2、是否完成指定的論文(設(shè)計)任務(wù)(包括裝訂與附件)? 優(yōu) 良 中 與格 不與格三、論文(設(shè)計)水平1、論文(設(shè)計)的理論意義或?qū)鉀Q實際問題的指導(dǎo)意義 優(yōu) 良 中 與格 不與格2、論文的觀念是否有新意?設(shè)計是否有創(chuàng)意? 優(yōu) 良 中 與格 不與格3、論文(設(shè)計說明書)所體現(xiàn)的整體水平 優(yōu) 良 中 與格 不與格建議成績:優(yōu) 良 中 與格 不與格(在所選等級前的畫“”)指導(dǎo)教師: (簽名) 單位: (蓋章)年 月 日40 / 49評閱教師評閱書評閱教師評價:一、論文(設(shè)計

11、)質(zhì)量1、論文(設(shè)計)的整體結(jié)構(gòu)是否符合撰寫規(guī)? 優(yōu) 良 中 與格 不與格2、是否完成指定的論文(設(shè)計)任務(wù)(包括裝訂與附件)? 優(yōu) 良 中 與格 不與格二、論文(設(shè)計)水平1、論文(設(shè)計)的理論意義或?qū)鉀Q實際問題的指導(dǎo)意義 優(yōu) 良 中 與格 不與格2、論文的觀念是否有新意?設(shè)計是否有創(chuàng)意? 優(yōu) 良 中 與格 不與格3、論文(設(shè)計說明書)所體現(xiàn)的整體水平 優(yōu) 良 中 與格 不與格建議成績:優(yōu) 良 中 與格 不與格(在所選等級前的畫“”)評閱教師: (簽名) 單位: (蓋章)年 月 日教研室(或答辯小組)與教學(xué)系意見教研室(或答辯小組)評價:一、答辯過程1、畢業(yè)論文(設(shè)計)的基本要點和見解的敘

12、述情況 優(yōu) 良 中 與格 不與格2、對答辯問題的反應(yīng)、理解、表達(dá)情況 優(yōu) 良 中 與格 不與格3、學(xué)生答辯過程中的精神狀態(tài) 優(yōu) 良 中 與格 不與格二、論文(設(shè)計)質(zhì)量1、論文(設(shè)計)的整體結(jié)構(gòu)是否符合撰寫規(guī)? 優(yōu) 良 中 與格 不與格2、是否完成指定的論文(設(shè)計)任務(wù)(包括裝訂與附件)? 優(yōu) 良 中 與格 不與格三、論文(設(shè)計)水平1、論文(設(shè)計)的理論意義或?qū)鉀Q實際問題的指導(dǎo)意義 優(yōu) 良 中 與格 不與格2、論文的觀念是否有新意?設(shè)計是否有創(chuàng)意? 優(yōu) 良 中 與格 不與格3、論文(設(shè)計說明書)所體現(xiàn)的整體水平 優(yōu) 良 中 與格 不與格評定成績:優(yōu) 良 中 與格 不與格(在所選等級前的畫“

13、”)教研室主任(或答辯小組組長): (簽名)年 月 日教學(xué)系意見:系主任: (簽名)年 月 日目 錄摘 要IAbstractII第1章 緒論11.1 課題來源、研究目的與意義11.2 國外相關(guān)領(lǐng)域開發(fā)與應(yīng)用現(xiàn)狀分析11.2.1 主流文檔編輯軟件的保護(hù)措施11.2.2 AutoCAD自帶安全功能分析21.2.3 開發(fā)與應(yīng)用現(xiàn)狀分析21.3 本文研究的主要容3第2章 系統(tǒng)需求分析和整體框架42.1 主要開發(fā)容42.2 需求分析52.2.1 用戶監(jiān)控模塊功能需求52.2.2 文檔轉(zhuǎn)換模塊功能需求52.2.3 實體置亂模塊功能需求52.2.4 信息加密模塊功能需求62.2.5 實體恢復(fù)模塊功能需求62

14、.3 系統(tǒng)整體框架62.4 本章小結(jié)7第3章 用戶監(jiān)控模塊的設(shè)計與實現(xiàn)83.1 Windows鉤子函數(shù)83.2 ObjectARX反應(yīng)器93.3 設(shè)計與實現(xiàn)103.4 運行結(jié)果123.5 本章小結(jié)13第4章 實體置亂和恢復(fù)模塊154.1 實體置亂模塊的設(shè)計154.1.1 點的處理164.1.2 線的處理164.1.3 多邊形處理174.1.4 塊的處理184.1.5 圖紙邊界處理214.1.6 其他相關(guān)屬性處理214.2 實體置亂模塊的實現(xiàn)214.2.1 實體置亂模塊的程序?qū)崿F(xiàn)214.2.2 文檔置亂模塊運行結(jié)果234.3 實體恢復(fù)模塊的設(shè)計244.3.1 點的恢復(fù)264.3.2 線的恢復(fù)26

15、4.3.3 線的恢復(fù)274.4 實體恢復(fù)模塊的實現(xiàn)284.5 本章小結(jié)29第5章 主要技術(shù)和算法介紹305.1 AutoCAD二次開發(fā)工具305.2 分組坐標(biāo)的置亂處理315.3 矩陣處理運算315.4 程序自動加載與鎖定325.5 本章小結(jié)34結(jié)論35致36參考文獻(xiàn)37第1章 緒論1.1 課題來源、研究目的與意義本項目來源于航天益來電子科技的CAD文檔保護(hù)系統(tǒng)的文檔置亂模塊。AutoCAD 軟件是 Autodesk 在軟件行業(yè)的第一場革命,AutoCAD 軟件享有廣泛的聲譽,它將制圖帶入了個人計算機(jī)時代1。Autodesk 于1994 年開始在注冊成立辦事處。過去的10 年, 中國數(shù)百萬的建

16、筑工程設(shè)計師和產(chǎn)品制造工程師利用了AutoCAD 的數(shù)字化設(shè)計技術(shù),甩掉了笨重的圖板、鉛筆和角尺這些束縛人類創(chuàng)造力奔涌的傳統(tǒng)設(shè)計工具用數(shù)字化方式與中國無數(shù)的施工現(xiàn)場和車間交互各種各樣的工程建筑與產(chǎn)品制造信息。使得中國在數(shù)字化工程設(shè)計上的設(shè)計效率普遍提高。成為中國工程師首選的工程制圖軟件。AutoCAD 軟件也為中國的改革開放和社會主義現(xiàn)代化建設(shè)創(chuàng)造了豐功偉績。AutoCAD 還為 Autodesk 公司的技術(shù)在建筑、基礎(chǔ)設(shè)施、制造、媒體和娛樂以與無線數(shù)據(jù)等各個行業(yè)中的領(lǐng)先鋪平了道路。AutoCAD 的出現(xiàn)確立了Autodesk 公司在軟件業(yè)霸主的地位,贏得了全世界人民的廣泛贊譽和充分肯定。但是

17、隨著AutoCAD軟件在各領(lǐng)域的廣泛使用,一些問題也開始逐漸出現(xiàn),其中最突出的就是文檔保護(hù)問題。眾所周知,每一工程圖紙都是工程師們的智慧結(jié)晶,關(guān)系了公司的最直接利益。每個公司都把工程圖紙當(dāng)作最的文件,一旦泄露到競爭對手手中,將給公司帶來無法估計的損失。但是一直以來都缺少一些行之有效的手段來對這些文件進(jìn)行保護(hù)。因此我們的項目就是要開發(fā)一個比較有效的工具,對CAD文檔進(jìn)行保護(hù),以期對這種現(xiàn)狀進(jìn)行改變。1.2 國外相關(guān)領(lǐng)域開發(fā)與應(yīng)用現(xiàn)狀分析1.2.1 主流文檔編輯軟件的保護(hù)措施文檔編輯軟件基本上都附加有訪問控制和數(shù)據(jù)功能,而且大多數(shù)的文檔信息安全方案實施都基于此2。在我們常用的各種文檔編輯軟件,比如

18、Microsoft 公司的Office 系列文檔編輯工具、Adobe 公司Acrobat PDF 文檔編輯閱讀器,以與zip或RAR 壓縮格式文件夾等等都自帶了多種數(shù)據(jù)保護(hù)功能。但是,這些文檔編輯軟件所提供的安全保護(hù)無論是從強(qiáng)度上還是功能上都不能滿足用戶的需求。從保護(hù)強(qiáng)度上來說,針對主流文檔編輯軟件的密碼保護(hù)功能,相應(yīng)的破解工具可以輕易的獲得。比如Passware Password Recovery Kit 等。從安全功能上來說,現(xiàn)有編輯軟件所提供的安全功能簡單,一般都是通過對稱加密實現(xiàn)文檔的性,而且通過用戶對密鑰的記憶實現(xiàn)所謂的訪問控制。即使實現(xiàn)了部分權(quán)限管理功能的最新版本的MS Offic

19、eWord,其權(quán)限管理功能也十分容易破解。但是針對WORD、PDF等格式的文檔,已經(jīng)存在了許多專業(yè)的文檔加密工具,通過這些工具我們可以實現(xiàn)比較有效的文檔保護(hù)。1.2.2 AutoCAD自帶安全功能分析AutoCAD自帶的安全功能主要包括以下幾種方式:(1) 自帶口令安全AutoCAD 自帶的口令安全選項和Word 口令安全選項大體一樣,通過市面上存在的一些針對Word的破解軟件,我們不難發(fā)現(xiàn)想做出針對AutoCAD的破解軟件并不是十分困難。(2) 電子傳遞電子傳遞功能讓用戶可以把當(dāng)前的圖形和相關(guān)的文件打包到一個單獨的傳選集中,它可以幫助用戶將圖形文件打包,以加密的形式在互聯(lián)網(wǎng)上傳送。(3) A

20、utodesk StreamlineAutodesk Streamline 為工程提供了一種易于使用的宿主環(huán)境,它可以幫助用戶安全地共享設(shè)計和工程數(shù)據(jù)、更有效地進(jìn)行協(xié)作并改善整個產(chǎn)品生命周期的業(yè)務(wù)流程。通過以下三種方式為用戶的設(shè)計數(shù)據(jù)提供安全保護(hù):驗證、訪問控制和加密3。1.2.3 開發(fā)與應(yīng)用現(xiàn)狀分析通過對市面上流通的一些相關(guān)加密軟件進(jìn)行分析,不難發(fā)現(xiàn),大多數(shù)軟件所使用的保護(hù)措施主要通過以下幾種形式。(1) 權(quán)限控制通過限制用戶的一些操作來實現(xiàn)文檔的保護(hù),這樣難免在使用軟件的過程中帶來一定的不便,而且破解方法也比較多。(2) 密碼控制通過設(shè)定密碼來保護(hù)文檔,市面上存在很多密碼破解程序,通過這些

21、軟件,可以在很短的時間破解由數(shù)字、字母構(gòu)成的密碼。(3) 禁止網(wǎng)絡(luò),部分硬件的使用同樣,給用戶帶來很大的不便。由于CAD圖是一種是矢量圖,同標(biāo)量圖相比,要在矢量圖里嵌入信息具有比較大的難度5。對于矢量圖形的一些加密處理技術(shù)還不夠成熟,因此直接對CAD文檔進(jìn)行數(shù)字加密技術(shù)應(yīng)用的比較少6。1.3 本文研究的主要容本文主要研究如何通過使用一些比較行之有效的方法,對CAD文檔進(jìn)行一系列的保護(hù)工作,包括權(quán)限管理,文檔置亂,篡改提醒,信息隱藏等我的工作的重點在于如何對文檔中的圖形,文字等實體要素進(jìn)行處理,通過一些加密手段,使圖紙信息可以得到。同時還不應(yīng)該破壞文檔本身的容,通過解密操作,可以使文檔得以還原。

22、本文主要針對以下容進(jìn)行了研究:(1) 用戶監(jiān)控模塊的設(shè)計與實現(xiàn);(2) 文檔置亂以與還原模塊的設(shè)計與實現(xiàn);(3) 置亂算法的研究分析;(4) 程序與AutoCAD軟件的兼容。第2章 系統(tǒng)需求分析和整體框架2.1 主要開發(fā)容由于CAD文檔的重要性,針對CAD文檔的一些泄密事件也層出不窮。雖然已經(jīng)有了一些加密軟件,但是總體效果并不是十分理想,破解方法比比皆是。我們系統(tǒng)的整體開發(fā)容就是開發(fā)出一個全面,有效的針對CAD文檔的保護(hù)系統(tǒng),通過這個系統(tǒng),用戶可以比較方便地對CAD文檔進(jìn)行保護(hù)工作,同時也不會影響到平時的工作。針對CAD文檔的保護(hù)方法,我們的系統(tǒng)主要可以分為下面幾個主要模塊,見圖2-1。圖2-

23、1 系統(tǒng)整體模塊其中權(quán)限控制模塊就是通過控制用戶的權(quán)限來保護(hù)文檔。信息隱藏是在對一些重要信息進(jìn)行加密隱藏。篡改提醒通過對文檔部實體元素進(jìn)行一種不可逆的映射,通過比較映射關(guān)系,可以很有效的文檔是否被他人惡意修改。本人所負(fù)責(zé)的模塊為文檔置亂模塊。這個模塊需要實現(xiàn)的主要功能就是在文檔保存的時候,對其部的圖形實體元素,文字標(biāo)注等信息進(jìn)行一種可逆的轉(zhuǎn)化。用戶只有在特定的環(huán)境下,才可以對文檔解密成功。這樣就可以使這個文檔在脫離了特定環(huán)境時,不會將信息泄露。2.2 需求分析由于項目的分工,我對其他模塊的了解并不是十分深入。接下來,我就僅對我所負(fù)責(zé)的模塊進(jìn)行分析。文檔置亂模塊根據(jù)自身的功能還可以分為幾個小模塊

24、,主要包括:用戶監(jiān)視模塊,文檔轉(zhuǎn)換模塊,實體置亂模塊(根據(jù)各種實體的不同,還可以進(jìn)一步細(xì)化),信息加密模塊,文檔恢復(fù)模塊。我們力求令整個系統(tǒng)的工作對用戶都是透明的,用戶在使用軟件的過程中,甚至感受不到文件正在被加密解密。本模塊主要在用戶關(guān)閉,打開文件的時候進(jìn)行工作。2.2.1 用戶監(jiān)控模塊功能需求本系統(tǒng)需要作為一個插件嵌入到AutoCAD軟件中,在用戶進(jìn)行關(guān)閉,另存為,打開等操作的時候,調(diào)用整個文檔置亂模塊。通過本模塊,系統(tǒng)可以捕捉到用戶的操作,在進(jìn)行相應(yīng)操作的時候系統(tǒng)進(jìn)行相應(yīng)的處理。2.2.2 文檔轉(zhuǎn)換模塊功能需求我們的系統(tǒng)是建立在DXF格式文件的基礎(chǔ)上的。AutoCAD文件是以DWG格式進(jìn)

25、行儲存,通過對DWG文件的研究,我們發(fā)現(xiàn)Autodesk公司對DWG文件進(jìn)行了很好的保護(hù)。我們從DWG文件中得到的僅僅是很緊湊的二進(jìn)制代碼,如果直接對這些二進(jìn)制代碼進(jìn)行加密的話,需要非常大工作量的計算,這是用戶所無法忍受的。這個模塊提供了一個將DWG格式文件與DXF格式文件之間的相互轉(zhuǎn)換。AutoCAD軟件產(chǎn)生的圖紙文件是DWG格式,DXF是一種開放標(biāo)準(zhǔn)的矢量圖形文件,我們的系統(tǒng)通過對DXF文檔進(jìn)行相應(yīng)操作,然后轉(zhuǎn)換成DWG格式文件。2.2.3 實體置亂模塊功能需求CAD圖紙是由各種實體元素構(gòu)成的,例如點、線段、各種圖形、文字標(biāo)注等。這個模塊的功能就是針對各種不同的元素,進(jìn)行不同的可逆的置亂操

26、作。并將置亂過程中所用到的輔助信息存儲起來。具體功能主要包括:(1) 點坐標(biāo)的處理(例如直線的起點,終點)(2) 長度的處理(例如圓的半徑長度)(3) 復(fù)雜圖形的處理(例如正多邊形的處理)(4) 標(biāo)注的處理(包括靜態(tài)標(biāo)注、動態(tài)標(biāo)注等)(5) 文字信息的處理2.2.4 信息加密模塊功能需求在實體置亂的過程中,將產(chǎn)生許多信息,例如運算用的矩陣。通過這些信息,可以對文檔進(jìn)行恢復(fù)。因此需要在對文檔進(jìn)行處理后對這些信息進(jìn)行儲存。這些信息如果以明碼的方式進(jìn)行儲存,這樣就非常容易被破解,因此我們需要對這些信息進(jìn)行加密處理。2.2.5 實體恢復(fù)模塊功能需求在用戶打開文件的時候,這個文件其實已經(jīng)是經(jīng)過置亂的,如

27、果直接返回給用戶,用戶是沒辦法得到有用的信息的。因此,我們需要在用戶打開文件的時候,對文檔進(jìn)行恢復(fù)工作。2.3 系統(tǒng)整體框架本系統(tǒng)致力于保護(hù)CAD文檔的安全,而CAD文檔的安全性問題主要是人為造成的。因此我們的系統(tǒng)通過用戶監(jiān)控模塊來對用戶的行為進(jìn)行監(jiān)控,然后調(diào)用其它的相關(guān)模塊對CAD文檔進(jìn)行保護(hù)工作。用戶監(jiān)控模塊貫穿于整個過程。系統(tǒng)整體框架如圖2-2所示。圖2-2 系統(tǒng)整體框架其中用戶監(jiān)控模塊用于對用戶行為進(jìn)行監(jiān)控,當(dāng)用戶作出類似于保存,打開,關(guān)閉等操作時,該模塊截斷AutoCAD軟件的命令,然后調(diào)用我們的系統(tǒng)模塊對文檔進(jìn)行保護(hù)。文檔轉(zhuǎn)換模塊用于將DWG文件轉(zhuǎn)換成可供我們處理的DXF文件。文檔

28、處理模塊的主要功能是對安全性較低的文檔進(jìn)行處理,使其部的實體進(jìn)行一種可逆性的轉(zhuǎn)換,使文檔信息得到保護(hù)。2.4 本章小結(jié)本章對我們所開發(fā)的系統(tǒng),以與本人所負(fù)責(zé)模塊進(jìn)行了簡單的介紹。確定了系統(tǒng)的功能需求,使我們對系統(tǒng)的有了比較直觀的了解。然后還給出了系統(tǒng)的一個整體框架,以方便理解我們系統(tǒng)的工作原理。第3章 用戶監(jiān)控模塊的設(shè)計與實現(xiàn)我們所開發(fā)的容包括文檔置亂,篡改提示,數(shù)字印章等模塊,這些模塊都需要面臨著一個共同的問題,在什么時刻運行我們的程序,如何在這些時刻運行我們的程序。這個問題如果無法解決,那么其他功能都無法有效地實現(xiàn)其作用。因此本模塊是其它模塊正常運行的一個前提,不僅我所負(fù)責(zé)的模塊需要使用到

29、,其他模塊也將使用到這個模塊的功能。本模塊所要實現(xiàn)的功能是對用戶的行為進(jìn)行監(jiān)控,在用戶做出某些操作,比如關(guān)閉文檔,另存為,打開文檔的時候,截獲系統(tǒng)傳遞的消息,并做出相關(guān)操作。在具體實現(xiàn)方法的選擇上,我們考慮了2個方法,一個是使用Windows鉤子函數(shù),另一個是ObjectARX反應(yīng)器。3.1 Windows鉤子函數(shù)Windows的鉤子函數(shù)可以認(rèn)為是Windows的主要特性之一。利用它們,您可以捕捉您自己進(jìn)程或其它進(jìn)程發(fā)生的事件。通過“鉤掛”,您可以給Windows一個處理或過濾事件的回調(diào)函數(shù),該函數(shù)也叫做“鉤子函數(shù)”,當(dāng)每次發(fā)生您感興趣的事件時,Windows都將調(diào)用該函數(shù)7。一共有兩種類型的

30、鉤子:局部的和遠(yuǎn)程的。局部鉤子僅鉤掛你自己進(jìn)程的事件。遠(yuǎn)程的鉤子還可以將鉤掛其它進(jìn)程發(fā)生的事件。遠(yuǎn)程的鉤子又有兩種:基于線程的它將捕獲其它進(jìn)程中某一特定線程的事件。簡言之,就是可以用來觀察其它進(jìn)程中的某一特定線程將發(fā)生的事件。系統(tǒng)圍的將捕捉系統(tǒng)中所有進(jìn)程將發(fā)生的事件消息。安裝鉤子函數(shù)將會影響系統(tǒng)的性能。監(jiān)測“系統(tǒng)圍事件”的系統(tǒng)鉤子特別明顯。因為系統(tǒng)在處理所有的相關(guān)事件時都將調(diào)用您的鉤子函數(shù),這樣您的系統(tǒng)將會明顯的減慢。所以應(yīng)謹(jǐn)慎使用,用完后立即卸載。還有,由于您可以預(yù)先截獲其它進(jìn)程的消息,所以一旦您的鉤子函數(shù)出了問題的話必將影響其它的進(jìn)程。記?。汗δ軓?qiáng)大也意味著使用時要負(fù)責(zé)任。鉤子函數(shù)根據(jù)事件

31、又可以分成以下幾種類型:(1) 鍵盤鉤子和低級鍵盤鉤子可以監(jiān)視各種鍵盤消息。 (2) 鼠標(biāo)鉤子和低級鼠標(biāo)鉤子可以監(jiān)視各種鼠標(biāo)消息。 (3) 外殼鉤子可以監(jiān)視各種Shell事件消息。比如啟動和關(guān)閉應(yīng)用程序。 (4) 日志鉤子可以記錄從系統(tǒng)消息隊列中取出的各種事件消息。 (5) 窗口過程鉤子監(jiān)視所有從系統(tǒng)消息隊列發(fā)往目標(biāo)窗口的消息。這些鉤子,幾乎可以覆蓋了所有的Windows操作。但是使用鉤子函數(shù)將會面臨許多問題:系統(tǒng)移植問題這邊所提到的鉤子函數(shù),主要指Windows鉤子函數(shù),當(dāng)我們的系統(tǒng)需要在其他操作系統(tǒng)進(jìn)行工作的時候,比如在LINUX下,那么,我們的系統(tǒng)是否可以工作呢,我們是否需要對鉤子函數(shù)重

32、新進(jìn)行編寫呢進(jìn)程問題如果我們使用了局部鉤子,將需要對AutoCAD本身的進(jìn)程進(jìn)行修改,嵌入鉤子函數(shù),這樣無疑難度是比較大的。使用遠(yuǎn)程鉤子,將需要建立一個新的進(jìn)程,對AutoCAD進(jìn)程進(jìn)行監(jiān)控,那么,如何通過這個進(jìn)程來控制AutoCAD的進(jìn)程,如何防止用戶通過終止進(jìn)程來取消監(jiān)控,都將構(gòu)成較大的問題。技術(shù)問題由于之前沒有接觸過鉤子函數(shù),因此需要從頭開始學(xué)習(xí),需要多長時間才能掌握這項技術(shù),這是無法估計的。因此,技術(shù)方面所帶來的風(fēng)險其實是相當(dāng)大的。3.2 ObjectARX反應(yīng)器ObjectARX中的ARX表示AutoCAD的運行時擴(kuò)展(AutoCAD Runtime eXtension)。Objec

33、tARX是一個綜合的API(Application Programming Interface),他包含了將200多個類和3000多個函數(shù)8。ObjectARX反應(yīng)器其實也可以算是一種鉤子函數(shù),與Windows鉤子函數(shù)不同的是,他是以類似于插件的形式,嵌入到AutoCAD程序中.其所監(jiān)視的事件,也是針對一些AutoCAD所特有的事件。經(jīng)常使用到的ObjectARX反應(yīng)器主要有以下幾種類型:(1)數(shù)據(jù)庫反應(yīng)器AcDbDatabaseReactor:數(shù)據(jù)庫反應(yīng)器監(jiān)視在AutoCAD數(shù)據(jù)庫圍的事件,例如添加或去除實體。(2)AutoCAD 編輯反應(yīng)器AcDbEditorReactor:編輯反應(yīng)器監(jiān)視

34、在用戶編輯圖形文件時發(fā)生的事件,例如發(fā)出命令,或關(guān)閉一個當(dāng)前的活動。(3)對象反應(yīng)器AcDbobjectReactor:對象反應(yīng)器可以監(jiān)視在指定對象被更改、復(fù)制或刪除時發(fā)生的事件。(4)AutoCAD 文檔管理反應(yīng)器AcApDocManagerReactor:從R2000以來,AutoCAD 是一個多文檔環(huán)境。文檔管理反應(yīng)器監(jiān)視在MDI模式下圖形文檔窗口事件,例如打開、關(guān)閉、切換圖形文檔等等。從上述分類中,我們不難發(fā)現(xiàn),ObjectARX反應(yīng)器跟Windows鉤子函數(shù)有著很大的區(qū)別。Windows鉤子函數(shù)是一個非常通用的技術(shù),可以說,他可以對在Windows下運行的所有程序進(jìn)行控制,功能確實非

35、常強(qiáng)大。但是,正因為他的這種廣泛性,當(dāng)我們具體到某一個程序的時候,對于一些簡單事件的控制可能很簡單。但是碰到一些比較復(fù)雜的事件,我們就需要去了解這個軟件本身的流程,因此我們可能需要進(jìn)行十分復(fù)雜的編程才能實現(xiàn)我們所需要的功能。相比之下,ObjectARX反應(yīng)器只使用于AutoCAD的二次開發(fā)。如果單純的只是進(jìn)行AutoCAD開發(fā),ObjectARX反應(yīng)器不但實現(xiàn)了Windows鉤子函數(shù)中所實現(xiàn)的功能,而且還在此基礎(chǔ)上,進(jìn)行了擴(kuò)展,實現(xiàn)了許多更加直接的功能。從編程的角度上講,ObjectARX所提供的是類以與方法。因此要構(gòu)造一個反應(yīng)器,僅僅需要對一個類型反應(yīng)器的父類進(jìn)行繼承,然后對方法進(jìn)行重寫。這

36、樣,大大降低了我們的編程難度。綜合以上因素,使用ObjectARX反應(yīng)器來實現(xiàn)用戶監(jiān)控模塊是一個比較好的選擇。3.3 設(shè)計與實現(xiàn)本模塊主要要對2種類型的操作進(jìn)行監(jiān)控。一類是直接傳遞命令的操作,比如另存為,這種操作是直接在當(dāng)前窗口進(jìn)行操作。另外一類是對文檔的直接操作,比如關(guān)閉文檔,這類操作是需要在窗口外部進(jìn)行操作。針對這2中不同類型的操作,我們使用了2種反應(yīng)器,AutoCAD 編輯反應(yīng)器和AutoCAD 文檔管理反應(yīng)器在用戶打開AutoCAD的時候,我們的程序自動加載了插件,并建立反應(yīng)器。當(dāng)用戶作出相關(guān)操作的時候,根據(jù)操作類型的不同,調(diào)用相關(guān)反應(yīng)器,通過反應(yīng)器,調(diào)用其它相關(guān)模塊的操作,具體流程如

37、圖3-1所示。圖3-1 用戶監(jiān)控模塊流程編輯反應(yīng)器AcDbEditorReactor用于監(jiān)視在用戶編輯圖形文件時發(fā)生的事件,例如發(fā)出命令修改一個圖形元素,或關(guān)閉一個當(dāng)前的活動。文檔管理反應(yīng)器AcApDocManagerReactor用于監(jiān)視在MDI模式下圖形文檔窗口事件,例如打開、關(guān)閉、切換圖形文檔等等。在本系統(tǒng)中,使用編輯反應(yīng)器的地方主要在用戶對文檔進(jìn)行保存操作時對文檔進(jìn)行置亂操作,對CAD文檔進(jìn)行修改時記錄其修改歷史,進(jìn)行篡改保護(hù)。使用文檔管理反應(yīng)器的地方主要在用戶打開一個新文檔,或者對一個文檔進(jìn)行關(guān)閉操作是對文檔進(jìn)行置亂操作。類圖如圖3-2所示。圖3-2 用戶監(jiān)控模塊類圖其中EditRe

38、ctorApp類用于控制2個反應(yīng)器的加載和刪除。該類使用方法On_kInitAppMsg()在程序被AutoCAD加載的時候,創(chuàng)建2個反應(yīng)器。當(dāng)AutoCAD刪除我們的插件,使用On_kUnloadAppMsg()方法,對反應(yīng)器進(jìn)行卸載,以釋放資源。AcEditorReactor類用于創(chuàng)建一個編輯反應(yīng)器。方法commandWillStart()用于在一條命令被執(zhí)行前,截斷命令,并進(jìn)行相應(yīng)操作。commandEnded()用于在命令執(zhí)行完畢后,恢復(fù)當(dāng)前操作。commandCancelled()用于用戶取消一條命令后回到上一條操作。AcApDocManagerReactor類用于創(chuàng)建一個文檔管理反

39、應(yīng)器。其中方法documentCreateStarted()用于在文檔打開前,對文檔進(jìn)行恢復(fù)操作。當(dāng)一個文檔被關(guān)閉時,調(diào)用documentToBeDeatroyed()對文檔進(jìn)行置亂操作。3.4 運行結(jié)果由于本模塊主要是后臺運行,并沒有直觀的界面,因此我們在測試的時候,加入了若干語句,在AutoCAD軟件運行的命令行中顯示程序運行的過程。首先通過AutoCAD命令appload加載生成的ARX文件。加載成功后,在命令行窗后中會出現(xiàn)加載成功的提示,同時分別創(chuàng)建了2個反應(yīng)器,結(jié)果如圖3-3所示。圖3-3 加載用戶監(jiān)控模塊其中appload是AutoCAD自帶命令,用于控制對應(yīng)用程序的加載與卸載等操

40、作。當(dāng)2個反應(yīng)器創(chuàng)建成功后,分別顯示提示信息。加載完畢后,就可以監(jiān)控用戶所作出的動作。我們進(jìn)行一次文檔另存為操作。程序捕捉到命令,然后截斷命令的運行,然后對文檔進(jìn)行置亂操作,操作后繼續(xù)保存命令。運行結(jié)果如圖3-4所示。圖3-4 進(jìn)行另存為操作時的后臺顯示其中命令saveas是AutoCAD自帶命令,代表對文件進(jìn)行另存為操作。在發(fā)出此條命令后,被程序截獲,顯示準(zhǔn)備保存文檔。然后對文檔進(jìn)行置亂操作。置亂完成后,繼續(xù)執(zhí)行另存為命令,保存完畢后,顯示文檔保存完畢。當(dāng)要關(guān)閉軟件時,應(yīng)當(dāng)對反應(yīng)器進(jìn)行卸載,同樣通過appload命令來進(jìn)行,卸載結(jié)果如圖3-5所示。圖3-5 卸載用戶監(jiān)控模塊3.5 本章小結(jié)本

41、章首先介紹了用戶監(jiān)控模塊的詳細(xì)功能以與其重要性,然后給出了2種可行性方法:Windows鉤子函數(shù)以與ObjectARX反應(yīng)器。通過對2種方法的研究比較,最后選定了ObjectARX反應(yīng)器來實現(xiàn)用戶監(jiān)控模塊。最后給出了整個程序的簡要流程圖,以與用于實現(xiàn)程序的類圖。該模塊是實現(xiàn)整個系統(tǒng)的一個基礎(chǔ),為以后的工作提供了很多必要的支持。第4章 實體置亂和恢復(fù)模塊4.1 實體置亂模塊的設(shè)計本部分是系統(tǒng)的一個比較關(guān)鍵的部分,通過對CAD圖紙各種實體,如點,線,多邊形等進(jìn)行置亂變換,來破壞原有圖紙的信息,從而起到保護(hù)作用。我們首先從文檔中,提取出各種實體的信息,再對這些實體進(jìn)行分類,對不同類型實體進(jìn)行不同的置

42、亂操作。具體流程見圖4-1。圖4-1 實體置亂模塊流程提取出實體并進(jìn)行分類后,對于不同類型的實體,處理方式以與處理難度都有所不同。如何實現(xiàn)一種速度,安全性都較好的算法是我們所需要研究的容。在很多情況下,兩者是有沖突的,安全性高的處理方式,難免造成處理時間上的延長,處理速度快的算法,安全性又無法得到保障。4.1.1 點的處理我們采取了分組置亂的方式,將所有點的坐標(biāo)分成16個一組,先對這16個坐標(biāo)進(jìn)行處理,打亂其順序,然后構(gòu)成一個4*4的矩陣。通過對矩陣進(jìn)行數(shù)學(xué)運算,進(jìn)一步對實現(xiàn)置亂功能。完成后,將矩陣的元素分配到各個點中。其流程如圖4-2所示。圖4-2 點處理流程4.1.2 線的處理在CAD文檔

43、中,線的存儲是由2個點構(gòu)成的,因此對線的處理與對點的處理很相似。只要對線的起始點和終止點的坐標(biāo)進(jìn)行變換,就可以實現(xiàn)線的變換。同樣,在處理線上,我們采用分組置亂。我們所需要考慮的是一些特殊情況的出現(xiàn),比如線段的2頂點出現(xiàn)重合現(xiàn)象。如果一條線段的2個頂點出現(xiàn)重合,在儲存文檔的時候,將會出現(xiàn)嚴(yán)重的錯誤。雖然在實際運行中,出現(xiàn)這種情況的概率還是比較小的,但是我們?nèi)匀挥斜匾獙@類情況進(jìn)行處理。處理過程如圖4-3所示。圖4-3 點處理流程4.1.3 多邊形處理這部分的處理也是整個系統(tǒng)的一個難點。例如畫一個最簡單的正方形,在AutoCAD中我們只需要拉出一條直線,然后選擇一個方向,就可以畫出一個正方形。但是

44、,在文件中,其存儲的并不是一條線和一個方向,而是存儲了4個點。如果只是對這4個點進(jìn)行簡單的點變換,這樣結(jié)果肯定不能不保持一個正方形,這樣系統(tǒng)就會出現(xiàn)錯誤。因此,在處理這類圖形的時候,需要保持圖形的原有性質(zhì),系統(tǒng)才不會出現(xiàn)錯誤。我們首先對圖形的一個頂點進(jìn)行點處理置亂,然后獲取邊的角度長度,對角度和長度進(jìn)行變換,然后根據(jù)順時針方向,計算出其余各個點的坐標(biāo),然后保存這些坐標(biāo)。當(dāng)然,這樣做無法避免一個數(shù)字精度的問題,或多或少會出現(xiàn)一定的數(shù)字誤差,但是這個問題在計算機(jī)中始終是無法避免的,包括通過AutoCAD直接進(jìn)行畫圖。我們所能做到的是提高數(shù)字精度,精確到小數(shù)點后的10位,這樣就可以最大程度上的減少誤

45、差。具體流程如圖4-4所示。圖4-4 多邊形處理流程在具體實現(xiàn)中,對于不同類型的圖形,需要調(diào)用不同的數(shù)學(xué)公式對坐標(biāo)進(jìn)行計算,這部分的工作量是比較大的。4.1.4 塊的處理在AutoCAD中,存在一類特殊的元素塊,塊就是把幾個簡單實體集合到一起,形成一個新的實體。對于這種實體的置亂,不但要在塊的位置上進(jìn)行處理,還需要對塊里面的每一個實體進(jìn)行處理在對塊進(jìn)行處理前,首先要弄清楚2個概念,一個是塊定義,一個是塊參照。塊定義就是一個塊的實際存在。在AutoCAD中所有的實體都保存在塊表記錄中,而塊表記錄則存儲在塊表中9。實際上,用戶在AutoCAD中定義塊相當(dāng)于增加了一個塊表記錄,塊表記錄的名稱就是塊定

46、義的名稱。塊參照是對塊定義的引用。塊定義不是一個實體,而是一種對實體的描述,通過定義塊獲得;塊參照則是一種實體,圖形窗口中顯示的“塊”都是塊參照,通過插入塊獲得。在ObjectARX 編程中,塊定義通過塊表記錄來保存,而塊參照由AcDbBlockReference類來表示。通過圖4-5,可以較直觀地理解塊參照和塊定義的關(guān)系。線圓塊參照線塊參照圓圓塊參照塊參照塊定義1線圓弧線塊定義2圓線弧線圖4-5 塊參照與塊定義的關(guān)系塊參照可以看成一個實體,有坐標(biāo),比例等屬性。塊參照指向一個塊定義,塊定義以一個塊表記錄的形式存在里面包含了實體的集合。同時可以有多個塊參照指向一個塊定義,在圖紙上顯示為由多個塊的

47、副本存在。做為一個實體,我們可以同處理其他實體的方式一樣,在遍歷塊表的時候,可以讀取到塊參照,這時候,就可以對塊進(jìn)行置亂處理。我們首先將塊里面的實體單獨提取出來,對每個實體進(jìn)行單獨置亂。然后,將這些實體再次集合成一個塊,然后對塊的整體進(jìn)行處理。具體流程見圖4-6。圖4-6 塊處理流程在實際開發(fā)過程中還存在一個問題,塊定義作為一個塊表記錄存在,里面可以包含許多實體,那么應(yīng)該也是可以包含塊參照,這樣就出現(xiàn)了塊中間還有一個塊。雖然在實際應(yīng)用中,這種情況可能不多見,但是也應(yīng)該考慮到??梢允褂眠f歸的方式來處理。4.1.5 圖紙邊界處理作為每一CAD圖紙,都有一個圖紙邊界,我們需要確保所有的坐標(biāo)都位于這個

48、邊界之中。當(dāng)我們對坐標(biāo)進(jìn)行變換完畢后,我們還需要對坐標(biāo)進(jìn)行判斷,是否超出了圖紙的邊界,如果超過了邊界,那么也是不允許的。我們考慮了使用取模的方法來進(jìn)行處理,但是要判斷一個坐標(biāo)是否是一個超出邊界的坐標(biāo),需要設(shè)定一個標(biāo)志位來進(jìn)行判斷,這樣加大了存儲空間。幸好,通過算法上的優(yōu)化,可以最大限度上來避免數(shù)字過大而超過邊界的情況出現(xiàn)因此我們可以通過進(jìn)行一次新的置亂過程來處理。4.1.6 其他相關(guān)屬性處理在CAD圖紙中,每一個實體不僅僅只有長度,坐標(biāo)等屬性,還包括了線條的顏色,線條的粗細(xì)等屬性。有些情況下,這些屬性也可能泄露出一些比較重要的信息,因此在這些情況下,應(yīng)該可以對這些屬性也進(jìn)行保護(hù)。我們把這些功能

49、做成可選項,當(dāng)用戶需要對這些屬性進(jìn)行置亂的時候,就可以選擇相關(guān)選項,而大部分情況下,為了節(jié)省計算機(jī)的資源,這些選項是可以不用的。4.2 實體置亂模塊的實現(xiàn)4.2.1 實體置亂模塊的程序?qū)崿F(xiàn)實體置亂模塊是整個系統(tǒng)的重點,也是最大的難點,在實現(xiàn)的過程中,我們付出了很大的努力。其類圖如圖4-7所示。其中DisorderApp類用于程序的初始化以與卸載,當(dāng)程序被AutoCAD軟件載入的時候,調(diào)用initApp()方法,對各個置亂類進(jìn)行初始化,在軟件中注冊命令等操作。卸載程序時,調(diào)用unloadApp()方法,對刪除各個類的注冊。acrxEntryPoint()方法用于對實體進(jìn)行定位。OpenDB類用于

50、打開并建立一個實體數(shù)據(jù)庫。其中g(shù)etBlockTable()方法用于獲得并創(chuàng)建一個實體列表,以供其它置亂類使用。getEntry()方法用于獲得實體列表中的各個實體。圖4-7 實體置亂模塊類圖LineDisorder類實現(xiàn)了對線的置亂。其中isKindOf()方法用于對獲得的實體進(jìn)行對比,以確定實體類型為一條直線。order()方法用于對獲得的線進(jìn)行分組。encrypt()方法用于調(diào)用置亂算法,對分組后的直線進(jìn)行置亂處理。appendAcDbEntity()方法用于把置亂后的線段數(shù)據(jù)更新到CAD文檔中。置亂完畢后,我們需要調(diào)用close()方法,將打開的實體進(jìn)行關(guān)閉,否則AutoCAD軟件會因

51、為資源管理問題而出錯。ArcDisorder類用于對弧線進(jìn)行置亂操作。其中isKindOf()方法用于對獲得的實體進(jìn)行對比,以確定實體類型為一條弧線。encrypt()方法用于調(diào)用置亂算法。setCenter()方法用于對弧線的圓心進(jìn)行處理,setStartAngle()方法用于對弧線的起始角度進(jìn)行處理,setEndAngle()方法用于對弧線的結(jié)束角度進(jìn)行處理。同樣我們需要調(diào)用close()方法,將打開的弧線進(jìn)行關(guān)閉,以釋放資源。TextDisorder類用于對文字進(jìn)行處理。同樣,我們調(diào)用isKindOff()和encrypt()方法進(jìn)行實體確認(rèn)和算法調(diào)用。通過appendAcDbEntit

52、y()方法來對修改容進(jìn)行更新。PolyDisorder類實現(xiàn)對多邊形的處理,其中setPoint方法用于計算各個點的坐標(biāo)。encrypt()方法用于調(diào)用置亂算法,對分組后的直線進(jìn)行置亂處理。appendAcDbEntity()方法用于把置亂后的線段數(shù)據(jù)更新到CAD文檔中。BlockDisorder類用于對塊進(jìn)行置亂。其中blockTableRecord()方法用于獲取塊所指向的記錄集,并對指向的記錄集中的實體進(jìn)行置亂操作,AcDbBlockReference()方法用于獲得塊參照信息。setPosition()方法用于對塊參照的整體進(jìn)行置亂操作。4.2.2 文檔置亂模塊運行結(jié)果首先,打開Aut

53、oCAD軟件,使用appload命令載入我們的應(yīng)用程序。文檔置亂模塊在用戶對文檔進(jìn)行保存,關(guān)閉等操作時進(jìn)行工作,因此我們打開一個正常的CAD文檔,如圖4-8所示。圖4-8 置亂前的CAD文檔然后我們對這個文檔進(jìn)行保存操作。保存完畢后,我們重新打開這個文檔,就可以看到置亂的結(jié)果,如圖4-9所示。圖4-9 置亂后的CAD文檔通過程序的運行結(jié)果,我們可以發(fā)現(xiàn),當(dāng)用戶直接對程序進(jìn)行保存后,將會得到一個跟原來文檔完全不一樣的一個結(jié)果,這樣,即使這個文檔通過某種人為的方式泄露出去,也不會造成巨大的損失。當(dāng)需要使用到這個文檔的時候,我們就可以運行文檔恢復(fù)模塊對其進(jìn)行恢復(fù)。4.3 實體恢復(fù)模塊的設(shè)計實體恢復(fù)模

54、塊是實體置亂模塊的逆過程。在實體置亂模塊中,我們針對每一個實體,進(jìn)行了可逆的變換,同時存儲了相應(yīng)的加密信息。在文檔恢復(fù)模塊中,我們需要通過這些加密信息,對每一個實體進(jìn)行恢復(fù)。具體流程如圖4-10所示。圖4-10 實體恢復(fù)模塊流程首先從文件中提取出實體信息和加密信息,然后針對不同的實體,進(jìn)行加密操作的逆運算,例如對點坐標(biāo)乘上逆矩陣?;謴?fù)完畢后,將恢復(fù)好的實體信息在儲存到CAD文檔中由于這個模塊是實體置亂模塊的一個逆過程,在已經(jīng)知道相關(guān)算法以與流程的情況下,實現(xiàn)起來還是比較容易的。4.3.1 點的恢復(fù)在AutoCAD中,各個實體是按照順序儲存的。在恢復(fù)的過程中,首先從已經(jīng)置亂的文檔中獲取到所有點的數(shù)據(jù),然后,進(jìn)行分組。分組完成后,形成矩陣,通過矩陣恢復(fù)算法,將這個矩陣恢復(fù)成原來的矩陣。然后把矩陣的元素恢復(fù)成正確順序,然后分配到相應(yīng)的點中去,然后就可以顯示正確的圖形。流程如圖4-11所示。圖4-11 點恢復(fù)流程通過這種二次置亂,恢復(fù),可以比較有效的保護(hù)文檔中的信息。4.3.2 線的恢復(fù)在線的恢復(fù)上,是比較簡單的。之前對線段特殊情況已經(jīng)進(jìn)行處理,因此在恢復(fù)的時候,是需要考慮這些情況的。同樣提取出線段實體后,對于已經(jīng)進(jìn)行特殊處理的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論