基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc

上传人:来看看 文档编号:3920546 上传时间:2019-10-10 格式:DOC 页数:57 大小:1.41MB
返回 下载 相关 举报
基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc_第1页
第1页 / 共57页
基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc_第2页
第2页 / 共57页
基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc_第3页
第3页 / 共57页
基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc_第4页
第4页 / 共57页
基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《基于DXF格式CAD文档保护系统置乱模块的设计与实现毕业论文.doc(57页珍藏版)》请在三一文库上搜索。

1、摘 要作为一款优秀的工业制图软件,AutoCAD得到了极为广泛的应用。但是随着AutoCAD的广泛应用,许多问题也逐渐凸现出来,其中尤为突出的就是文档保护问题。众所周知,每一张工程图纸都是工程师们的智慧结晶,关系了公司的最直接利益。每个公司都把工程图纸当作最机密的文件,一旦泄露到竞争对手手中,将给公司带来无法估计的损失。AutoDesk公司提供了一个优秀的二次开发工具ObjectARX,通过这个工具我们可以极为方便地开发出AutoCAD软件的插件。这为我们开发出一个文档保护工具提供了可能性。本文所论述CAD文档保护系统置乱模块,就是通过对CAD文档中各种实体进行一种可逆变换,令CAD文档脱离特

2、定环境后可以隐藏其真实信息,从而起到保护作用。本文的重点在于如何分割实体,针对不同的实体设计出相应的加密算法。本文还涉及到对用户行为的监控,软件与AutoCAD软件的兼容性问题等问题的研究。关键词CAD;文档保护;置乱;加密算法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

3、 by 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 companys most direct interest. Engineering drawings of each company regarded as the most confidential documents, once leaked to the han

4、ds 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 possibility

5、.This paper discussed by the CAD document protection system scrambling modules, the CAD is to document the various entities in a reversible transform ation, 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.Keywords CAD Document Protection Scrambling Encryption alg

7、orithm毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的

8、印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部

9、门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及

10、格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评

11、阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日哈尔滨工业大学本科毕业设计(论文)教研室(或答辩小组)及教学系意见教研室(或答

12、辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中

13、 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日- III -哈尔滨工业大学本科毕业设计(论文)目 录摘 要IAbstractII第1章 绪论11.1 课题来源、研究目的及意义11.2 国内外相关领域开发及应用现状分析11.2.1 主流文档编辑软件的保护措施11.2.2 AutoCAD自带安全功能分析21.2.3 开发及应用现状分析21.3 本文研究的主要内容3第2章 系统需求分析和整体框架42.1 主要开发内容42.2 需求分析52.2.1 用户监控模块功能需求52.2.2

14、文档转换模块功能需求52.2.3 实体置乱模块功能需求52.2.4 信息加密模块功能需求62.2.5 实体恢复模块功能需求62.3 系统整体框架62.4 本章小结7第3章 用户监控模块的设计与实现83.1 Windows钩子函数83.2 ObjectARX反应器93.3 设计与实现103.4 运行结果123.5 本章小结13第4章 实体置乱和恢复模块154.1 实体置乱模块的设计154.1.1 点的处理164.1.2 线的处理164.1.3 多边形处理174.1.4 块的处理184.1.5 图纸边界处理214.1.6 其他相关属性处理214.2 实体置乱模块的实现214.2.1 实体置乱模块的

15、程序实现214.2.2 文档置乱模块运行结果234.3 实体恢复模块的设计244.3.1 点的恢复264.3.2 线的恢复264.3.3 线的恢复274.4 实体恢复模块的实现284.5 本章小结29第5章 主要技术和算法介绍305.1 AutoCAD二次开发工具305.2 分组坐标的置乱处理315.3 矩阵处理运算315.4 程序自动加载与锁定325.5 本章小结34结论35致谢36参考文献37- V -哈尔滨工业大学本科毕业设计(论文)第1章 绪论1.1 课题来源、研究目的及意义本项目来源于北京航天益来电子科技有限公司的CAD文档保护系统的文档置乱模块。AutoCAD 软件是 Autode

16、sk 在软件行业的第一场革命,AutoCAD 软件享有广泛的声誉,它将制图带入了个人计算机时代1。Autodesk 于1994 年开始在北京注册成立办事处。过去的10 年, 中国数百万的建筑工程设计师和产品制造工程师利用了AutoCAD 的数字化设计技术,甩掉了笨重的图板、铅笔和角尺这些束缚人类创造力奔涌的传统设计工具用数字化方式与中国无数的施工现场和车间交互各种各样的工程建筑与产品制造信息。使得中国在数字化工程设计上的设计效率普遍提高。成为中国工程师首选的工程制图软件。AutoCAD 软件也为中国的改革开放和社会主义现代化建设创造了丰功伟绩。AutoCAD 还为 Autodesk 公司的技术

17、在建筑、基础设施、制造、媒体和娱乐以及无线数据等各个行业中的领先铺平了道路。AutoCAD 的出现确立了Autodesk 公司在软件业霸主的地位,赢得了全世界人民的广泛赞誉和充分肯定。但是随着AutoCAD软件在各领域的广泛使用,一些问题也开始逐渐出现,其中最突出的就是文档保护问题。众所周知,每一张工程图纸都是工程师们的智慧结晶,关系了公司的最直接利益。每个公司都把工程图纸当作最机密的文件,一旦泄露到竞争对手手中,将给公司带来无法估计的损失。但是一直以来都缺少一些行之有效的手段来对这些文件进行保护。因此我们的项目就是要开发一个比较有效的工具,对CAD文档进行保护,以期对这种现状进行改变。1.2

18、 国内外相关领域开发及应用现状分析1.2.1 主流文档编辑软件的保护措施文档编辑软件基本上都附加有访问控制和数据保密功能,而且大多数的文档信息安全方案实施都基于此2。在我们常用的各种文档编辑软件,比如Microsoft 公司的Office 系列文档编辑工具、Adobe 公司 Acrobat PDF 文档编辑阅读器,以及zip或RAR 压缩格式文件夹等等都自带了多种数据保护功能。但是,这些文档编辑软件所提供的安全保护无论是从强度上还是功能上都不能满足用户的需求。从保护强度上来说,针对主流文档编辑软件的密码保护功能,相应的破解工具可以轻易的获得。比如Passware Password Recove

19、ry Kit 等。从安全功能上来说,现有编辑软件所提供的安全功能简单,一般都是通过对称加密实现文档的保密性,而且通过用户对密钥的记忆实现所谓的访问控制。即使实现了部分权限管理功能的最新版本的MS OfficeWord,其权限管理功能也十分容易破解。但是针对WORD、PDF等格式的文档,已经存在了许多专业的文档加密工具,通过这些工具我们可以实现比较有效的文档保护。1.2.2 AutoCAD自带安全功能分析AutoCAD自带的安全功能主要包括以下几种方式:(1) 自带口令安全AutoCAD 自带的口令安全选项和Word 口令安全选项大体相同,通过市面上存在的一些针对Word的破解软件,我们不难发现

20、想做出针对AutoCAD的破解软件并不是十分困难。(2) 电子传递电子传递功能让用户可以把当前的图形和相关的文件打包到一个单独的传选集中,它可以帮助用户将图形文件打包,以加密的形式在互联网上传送。(3) Autodesk StreamlineAutodesk Streamline 为工程提供了一种易于使用的宿主环境,它可以帮助用户安全地共享设计和工程数据、更有效地进行协作并改善整个产品生命周期内的业务流程。通过以下三种方式为用户的设计数据提供安全保护:验证、访问控制和加密3。1.2.3 开发及应用现状分析通过对市面上流通的一些相关加密软件进行分析,不难发现,大多数软件所使用的保护措施主要通过以

21、下几种形式。(1) 权限控制通过限制用户的一些操作来实现文档的保护,这样难免在使用软件的过程中带来一定的不便,而且破解方法也比较多。(2) 密码控制通过设定密码来保护文档,市面上存在很多密码破解程序,通过这些软件,可以在很短的时间内破解由数字、字母构成的密码。(3) 禁止网络,部分硬件的使用同样,给用户带来很大的不便。由于CAD图是一种是矢量图,同标量图相比,要在矢量图里嵌入信息具有比较大的难度5。对于矢量图形的一些加密处理技术还不够成熟,因此直接对CAD文档进行数字加密技术应用的比较少6。1.3 本文研究的主要内容本文主要研究如何通过使用一些比较行之有效的方法,对CAD文档进行一系列的保护工

22、作,包括权限管理,文档置乱,篡改提醒,信息隐藏等我的工作的重点在于如何对文档中的图形,文字等实体要素进行处理,通过一些加密手段,使图纸信息可以得到保密。同时还不应该破坏文档本身的内容,通过解密操作,可以使文档得以还原。本文主要针对以下内容进行了研究:(1) 用户监控模块的设计与实现;(2) 文档置乱以及还原模块的设计与实现;(3) 置乱算法的研究分析;(4) 程序与AutoCAD软件的兼容。第2章 系统需求分析和整体框架2.1 主要开发内容由于CAD文档的重要性,针对CAD文档的一些泄密事件也层出不穷。虽然已经有了一些加密软件,但是总体效果并不是十分理想,破解方法比比皆是。我们系统的整体开发内

23、容就是开发出一个全面,有效的针对CAD文档的保护系统,通过这个系统,用户可以比较方便地对CAD文档进行保护工作,同时也不会影响到平时的工作。针对CAD文档的保护方法,我们的系统主要可以分为下面几个主要模块,见图2-1。图2-1 系统整体模块其中权限控制模块就是通过控制用户的权限来保护文档。信息隐藏是在对一些重要信息进行加密隐藏。篡改提醒通过对文档内部实体元素进行一种不可逆的映射,通过比较映射关系,可以很有效的文档是否被他人恶意修改。本人所负责的模块为文档置乱模块。这个模块需要实现的主要功能就是在文档保存的时候,对其内部的图形实体元素,文字标注等信息进行一种可逆的转化。用户只有在特定的环境下,才

24、可以对文档解密成功。这样就可以使这个文档在脱离了特定环境时,不会将信息泄露。2.2 需求分析由于项目的分工,我对其他模块的了解并不是十分深入。接下来,我就仅对我所负责的模块进行分析。文档置乱模块根据自身的功能还可以分为几个小模块,主要包括:用户监视模块,文档转换模块,实体置乱模块(根据各种实体的不同,还可以进一步细化),信息加密模块,文档恢复模块。我们力求令整个系统的工作对用户都是透明的,用户在使用软件的过程中,甚至感受不到文件正在被加密解密。本模块主要在用户关闭,打开文件的时候进行工作。2.2.1 用户监控模块功能需求本系统需要作为一个插件嵌入到AutoCAD软件中,在用户进行关闭,另存为,

25、打开等操作的时候,调用整个文档置乱模块。通过本模块,系统可以捕捉到用户的操作,在进行相应操作的时候系统进行相应的处理。2.2.2 文档转换模块功能需求我们的系统是建立在DXF格式文件的基础上的。AutoCAD文件是以DWG格式进行储存,通过对DWG文件的研究,我们发现Autodesk公司对DWG文件进行了很好的保护。我们从DWG文件中得到的仅仅是很紧凑的二进制代码,如果直接对这些二进制代码进行加密的话,需要非常大工作量的计算,这是用户所无法忍受的。这个模块提供了一个将DWG格式文件与DXF格式文件之间的相互转换。AutoCAD软件产生的图纸文件是DWG格式,DXF是一种开放标准的矢量图形文件,

26、我们的系统通过对DXF文档进行相应操作,然后转换成DWG格式文件。2.2.3 实体置乱模块功能需求CAD图纸是由各种实体元素构成的,例如点、线段、各种图形、文字标注等。这个模块的功能就是针对各种不同的元素,进行不同的可逆的置乱操作。并将置乱过程中所用到的辅助信息存储起来。具体功能主要包括:(1) 点坐标的处理(例如直线的起点,终点)(2) 长度的处理(例如圆的半径长度)(3) 复杂图形的处理(例如正多边形的处理)(4) 标注的处理(包括静态标注、动态标注等)(5) 文字信息的处理2.2.4 信息加密模块功能需求在实体置乱的过程中,将产生许多信息,例如运算用的矩阵。通过这些信息,可以对文档进行恢

27、复。因此需要在对文档进行处理后对这些信息进行储存。这些信息如果以明码的方式进行储存,这样就非常容易被破解,因此我们需要对这些信息进行加密处理。2.2.5 实体恢复模块功能需求在用户打开文件的时候,这个文件其实已经是经过置乱的,如果直接返回给用户,用户是没办法得到有用的信息的。因此,我们需要在用户打开文件的时候,对文档进行恢复工作。2.3 系统整体框架本系统致力于保护CAD文档的安全,而CAD文档的安全性问题主要是人为造成的。因此我们的系统通过用户监控模块来对用户的行为进行监控,然后调用其它的相关模块对CAD文档进行保护工作。用户监控模块贯穿于整个过程。系统整体框架如图2-2所示。图2-2 系统

28、整体框架其中用户监控模块用于对用户行为进行监控,当用户作出类似于保存,打开,关闭等操作时,该模块截断AutoCAD软件的命令,然后调用我们的系统模块对文档进行保护。文档转换模块用于将DWG文件转换成可供我们处理的DXF文件。文档处理模块的主要功能是对安全性较低的文档进行处理,使其内部的实体进行一种可逆性的转换,使文档信息得到保护。2.4 本章小结本章对我们所开发的系统,以及本人所负责模块进行了简单的介绍。确定了系统的功能需求,使我们对系统的有了比较直观的了解。然后还给出了系统的一个整体框架,以方便理解我们系统的工作原理。第3章 用户监控模块的设计与实现我们所开发的内容包括文档置乱,篡改提示,数

29、字印章等模块,这些模块都需要面临着一个共同的问题,在什么时刻运行我们的程序,如何在这些时刻运行我们的程序。这个问题如果无法解决,那么其他功能都无法有效地实现其作用。因此本模块是其它模块正常运行的一个前提,不仅我所负责的模块需要使用到,其他模块也将使用到这个模块的功能。本模块所要实现的功能是对用户的行为进行监控,在用户做出某些操作,比如关闭文档,另存为,打开文档的时候,截获系统传递的消息,并做出相关操作。在具体实现方法的选择上,我们考虑了2个方法,一个是使用Windows钩子函数,另一个是ObjectARX反应器。3.1 Windows钩子函数Windows的钩子函数可以认为是Windows的主

30、要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给Windows一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,Windows都将调用该函数7。一共有两种类型的钩子:局部的和远程的。局部钩子仅钩挂你自己进程的事件。远程的钩子还可以将钩挂其它进程发生的事件。远程的钩子又有两种:基于线程的它将捕获其它进程中某一特定线程的事件。简言之,就是可以用来观察其它进程中的某一特定线程将发生的事件。系统范围的将捕捉系统中所有进程将发生的事件消息。安装钩子函数将会影响系统的性能。监测“系统范围事件”的系统钩子特别明显。因为系统在处理所有的相

31、关事件时都将调用您的钩子函数,这样您的系统将会明显的减慢。所以应谨慎使用,用完后立即卸载。还有,由于您可以预先截获其它进程的消息,所以一旦您的钩子函数出了问题的话必将影响其它的进程。记住:功能强大也意味着使用时要负责任。钩子函数根据事件又可以分成以下几种类型:(1) 键盘钩子和低级键盘钩子可以监视各种键盘消息。 (2) 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。 (3) 外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。 (4) 日志钩子可以记录从系统消息队列中取出的各种事件消息。 (5) 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。这些钩子,几乎可以覆盖了所有的Wi

32、ndows操作。但是使用钩子函数将会面临许多问题:系统移植问题这边所提到的钩子函数,主要指Windows钩子函数,当我们的系统需要在其他操作系统进行工作的时候,比如在LINUX下,那么,我们的系统是否可以工作呢,我们是否需要对钩子函数重新进行编写呢进程问题如果我们使用了局部钩子,将需要对AutoCAD本身的进程进行修改,嵌入钩子函数,这样无疑难度是比较大的。使用远程钩子,将需要建立一个新的进程,对AutoCAD进程进行监控,那么,如何通过这个进程来控制AutoCAD的进程,如何防止用户通过终止进程来取消监控,都将构成较大的问题。技术问题由于之前没有接触过钩子函数,因此需要从头开始学习,需要多长

33、时间才能掌握这项技术,这是无法估计的。因此,技术方面所带来的风险其实是相当大的。3.2 ObjectARX反应器ObjectARX中的ARX表示AutoCAD的运行时扩展(AutoCAD Runtime eXtension)。ObjectARX是一个综合的API(Application Programming Interface),他包含了将200多个类和3000多个函数8。ObjectARX反应器其实也可以算是一种钩子函数,与Windows钩子函数不同的是,他是以类似于插件的形式,嵌入到AutoCAD程序中.其所监视的事件,也是针对一些AutoCAD所特有的事件。经常使用到的ObjectAR

34、X反应器主要有以下几种类型:(1)数据库反应器AcDbDatabaseReactor:数据库反应器监视在AutoCAD数据库范围内的事件,例如添加或去除实体。(2)AutoCAD 编辑反应器AcDbEditorReactor:编辑反应器监视在用户编辑图形文件时发生的事件,例如发出命令,或关闭一个当前的活动。(3)对象反应器AcDbobjectReactor:对象反应器可以监视在指定对象被更改、复制或删除时发生的事件。(4)AutoCAD 文档管理反应器AcApDocManagerReactor:从R2000以来,AutoCAD 是一个多文档环境。文档管理反应器监视在MDI模式下图形文档窗口事件

35、,例如打开、关闭、切换图形文档等等。从上述分类中,我们不难发现,ObjectARX反应器跟Windows钩子函数有着很大的区别。Windows钩子函数是一个非常通用的技术,可以说,他可以对在Windows下运行的所有程序进行控制,功能确实非常强大。但是,正因为他的这种广泛性,当我们具体到某一个程序的时候,对于一些简单事件的控制可能很简单。但是碰到一些比较复杂的事件,我们就需要去了解这个软件本身的流程,因此我们可能需要进行十分复杂的编程才能实现我们所需要的功能。相比之下,ObjectARX反应器只使用于AutoCAD的二次开发。如果单纯的只是进行AutoCAD开发,ObjectARX反应器不但实

36、现了Windows钩子函数中所实现的功能,而且还在此基础上,进行了扩展,实现了许多更加直接的功能。从编程的角度上讲,ObjectARX所提供的是类以及方法。因此要构造一个反应器,仅仅需要对一个类型反应器的父类进行继承,然后对方法进行重写。这样,大大降低了我们的编程难度。综合以上因素,使用ObjectARX反应器来实现用户监控模块是一个比较好的选择。3.3 设计与实现本模块主要要对2种类型的操作进行监控。一类是直接传递命令的操作,比如另存为,这种操作是直接在当前窗口进行操作。另外一类是对文档的直接操作,比如关闭文档,这类操作是需要在窗口外部进行操作。针对这2中不同类型的操作,我们使用了2种反应器

37、,AutoCAD 编辑反应器和AutoCAD 文档管理反应器在用户打开AutoCAD的时候,我们的程序自动加载了插件,并建立反应器。当用户作出相关操作的时候,根据操作类型的不同,调用相关反应器,通过反应器,调用其它相关模块的操作,具体流程如图3-1所示。图3-1 用户监控模块流程编辑反应器AcDbEditorReactor用于监视在用户编辑图形文件时发生的事件,例如发出命令修改一个图形元素,或关闭一个当前的活动。文档管理反应器AcApDocManagerReactor用于监视在MDI模式下图形文档窗口事件,例如打开、关闭、切换图形文档等等。在本系统中,使用编辑反应器的地方主要在用户对文档进行保

38、存操作时对文档进行置乱操作,对CAD文档进行修改时记录其修改历史,进行篡改保护。使用文档管理反应器的地方主要在用户打开一个新文档,或者对一个文档进行关闭操作是对文档进行置乱操作。类图如图3-2所示。图3-2 用户监控模块类图其中EditRectorApp类用于控制2个反应器的加载和删除。该类使用方法On_kInitAppMsg()在程序被AutoCAD加载的时候,创建2个反应器。当AutoCAD删除我们的插件,使用On_kUnloadAppMsg()方法,对反应器进行卸载,以释放资源。AcEditorReactor类用于创建一个编辑反应器。方法commandWillStart()用于在一条命令

39、被执行前,截断命令,并进行相应操作。commandEnded()用于在命令执行完毕后,恢复当前操作。commandCancelled()用于用户取消一条命令后回到上一条操作。AcApDocManagerReactor类用于创建一个文档管理反应器。其中方法documentCreateStarted()用于在文档打开前,对文档进行恢复操作。当一个文档被关闭时,调用documentToBeDeatroyed()对文档进行置乱操作。3.4 运行结果由于本模块主要是后台运行,并没有直观的界面,因此我们在测试的时候,加入了若干语句,在AutoCAD软件运行的命令行中显示程序运行的过程。首先通过AutoCA

40、D命令appload加载生成的ARX文件。加载成功后,在命令行窗后中会出现加载成功的提示,同时分别创建了2个反应器,结果如图3-3所示。图3-3 加载用户监控模块其中appload是AutoCAD自带命令,用于控制对应用程序的加载与卸载等操作。当2个反应器创建成功后,分别显示提示信息。加载完毕后,就可以监控用户所作出的动作。我们进行一次文档另存为操作。程序捕捉到命令,然后截断命令的运行,然后对文档进行置乱操作,操作后继续保存命令。运行结果如图3-4所示。图3-4 进行另存为操作时的后台显示其中命令saveas是AutoCAD自带命令,代表对文件进行另存为操作。在发出此条命令后,被程序截获,显示

41、准备保存文档。然后对文档进行置乱操作。置乱完成后,继续执行另存为命令,保存完毕后,显示文档保存完毕。当要关闭软件时,应当对反应器进行卸载,同样通过appload命令来进行,卸载结果如图3-5所示。图3-5 卸载用户监控模块3.5 本章小结本章首先介绍了用户监控模块的详细功能以及其重要性,然后给出了2种可行性方法:Windows钩子函数以及ObjectARX反应器。通过对2种方法的研究比较,最后选定了ObjectARX反应器来实现用户监控模块。最后给出了整个程序的简要流程图,以及用于实现程序的类图。该模块是实现整个系统的一个基础,为以后的工作提供了很多必要的支持。第4章 实体置乱和恢复模块4.1

42、 实体置乱模块的设计本部分是系统的一个比较关键的部分,通过对CAD图纸内各种实体,如点,线,多边形等进行置乱变换,来破坏原有图纸的信息,从而起到保护作用。我们首先从文档中,提取出各种实体的信息,再对这些实体进行分类,对不同类型实体进行不同的置乱操作。具体流程见图4-1。图4-1 实体置乱模块流程提取出实体并进行分类后,对于不同类型的实体,处理方式以及处理难度都有所不同。如何实现一种速度,安全性都较好的算法是我们所需要研究的内容。在很多情况下,两者是有冲突的,安全性高的处理方式,难免造成处理时间上的延长,处理速度快的算法,安全性又无法得到保障。4.1.1 点的处理我们采取了分组置乱的方式,将所有

43、点的坐标分成16个一组,先对这16个坐标进行处理,打乱其顺序,然后构成一个4*4的矩阵。通过对矩阵进行数学运算,进一步对实现置乱功能。完成后,将矩阵的元素分配到各个点中。其流程如图4-2所示。图4-2 点处理流程4.1.2 线的处理在CAD文档中,线的存储是由2个点构成的,因此对线的处理与对点的处理很相似。只要对线的起始点和终止点的坐标进行变换,就可以实现线的变换。同样,在处理线上,我们采用分组置乱。我们所需要考虑的是一些特殊情况的出现,比如线段的2顶点出现重合现象。如果一条线段的2个顶点出现重合,在储存文档的时候,将会出现严重的错误。虽然在实际运行中,出现这种情况的概率还是比较小的,但是我们

44、仍然有必要对这类情况进行处理。处理过程如图4-3所示。图4-3 点处理流程4.1.3 多边形处理这部分的处理也是整个系统的一个难点。例如画一个最简单的正方形,在AutoCAD中我们只需要拉出一条直线,然后选择一个方向,就可以画出一个正方形。但是,在文件中,其存储的并不是一条线和一个方向,而是存储了4个点。如果只是对这4个点进行简单的点变换,这样结果肯定不能不保持一个正方形,这样系统就会出现错误。因此,在处理这类图形的时候,需要保持图形的原有性质,系统才不会出现错误。我们首先对图形的一个顶点进行点处理置乱,然后获取边的角度长度,对角度和长度进行变换,然后根据顺时针方向,计算出其余各个点的坐标,然后保存这些坐标。当然,这样做无法避免一个数字精度的问题,或多或少会出现一定的数字误差,但是这个问题在计算机中始终是无法避免的,包括通过AutoCAD直接进行画图。我们所能做到的是提高数字精度,精确到小数点后的10位,这样就可以最大程度上的减少

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1