欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

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

    • 资源ID:3903644       资源大小:1.33MB        全文页数:44页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    本科毕业设计(论文)毕业设计(论文)任务书姓 名: 院(系):软件学院专 业:软件工程 学 号:任务起止日期: 2007年08 月15 日至 2008年 06月 10日毕业设计(论文)题目:基于DXF格式CAD文档保护系统置乱模块设计与实现立题的目的和意义:随着AutoCAD软件在各领域的广泛使用,一些问题也开始逐渐出现,其中最突出的就是文档保护问题。众所周知,每一张工程图纸都是工程师们的智慧结晶,关系了公司的最直接利益。每个公司都把工程图纸当作最机密的文件,一旦泄露到竞争对手手中,将给公司带来无法估计的损失。但是一直以来都缺少一些行之有效的手段来对这些文件进行保护。因此我们的项目就是要开发一个比较有效的工具,对CAD文档进行保护,以期对这种现状进行改变。我的模块则主要通过对文档实体的置乱来达到对图纸内容的一些保护。技术要求和主要内容:技术要求:熟练使用C+语言,熟悉并熟练使用VS2005。了解密码学的相关知识。熟悉AutoCAD的基本工作流程,ObjectARX开发环境的使用,了解DXF格式文件规范。主要内容:本人所负责的模块为文档置乱模块。这个模块需要实现的主要功能就是在文档保存的时候,对其内部的图形实体元素,文字标注等信息进行一种可逆的转化。用户只有在特定的环境下,才可以对文档解密成功。这样就可以使这个文档在脱离了特定环境时,不会将信息泄露。进度安排:07年8月15日 9月15日 公司实习培训07年9月16日10月15日查阅相关文献,熟悉项目框架 进行信息安全方面的学习07年10月16日12月1日 熟悉Object ARX 2007开发环境,学习DXF文件格式07年12月2日08年01月14日 完成项目的详细设计08年1月15日08年03月31日 个人模块的编写与实现08年04月1日08年06月9日 代码测试,准备论文答辩08年06月10日08年07月01日 撰写论文,参加毕业答辩同组设计者及分工:王毅 项目总负责人 ,管理权限模块设计范宇 模块测试与文档整理赵鹏 系统篡改提示模块的设计与实现夏奎龙 系统信息隐藏模块的设计与实现 系统文档置乱模块设计与实现指导教师意见: 签 名: 年 月 日教研室主任意见: 签 名: 年 月 日摘 要作为一款优秀的工业制图软件,AutoCAD得到了极为广泛的应用。但是随着AutoCAD的广泛应用,许多问题也逐渐凸现出来,其中尤为突出的就是文档保护问题。众所周知,每一张工程图纸都是工程师们的智慧结晶,关系了公司的最直接利益。每个公司都把工程图纸当作最机密的文件,一旦泄露到竞争对手手中,将给公司带来无法估计的损失。AutoDesk公司提供了一个优秀的二次开发工具ObjectARX,通过这个工具我们可以极为方便地开发出AutoCAD软件的插件。这为我们开发出一个文档保护工具提供了可能性。本文所论述CAD文档保护系统置乱模块,就是通过对CAD文档中各种实体进行一种可逆变换,令CAD文档脱离特定环境后可以隐藏其真实信息,从而起到保护作用。本文的重点在于如何分割实体,针对不同的实体设计出相应的加密算法。本文还涉及到对用户行为的监控,软件与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 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 company's most direct interest. Engineering drawings of each company regarded as the most confidential documents, once leaked to the hands 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.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 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 algorithm- IV -本科毕业设计(论文)目 录摘 要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 文档转换模块功能需求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 实体置乱模块的程序实现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- VI -本科毕业设计(论文)第1章 绪论1.1 课题来源、研究目的及意义本项目来源于北京航天益来电子科技有限公司的CAD文档保护系统的文档置乱模块。AutoCAD 软件是 Autodesk 在软件行业的第一场革命,AutoCAD 软件享有广泛的声誉,它将制图带入了个人计算机时代1。Autodesk 于1994 年开始在北京注册成立办事处。过去的10 年, 中国数百万的建筑工程设计师和产品制造工程师利用了AutoCAD 的数字化设计技术,甩掉了笨重的图板、铅笔和角尺这些束缚人类创造力奔涌的传统设计工具用数字化方式与中国无数的施工现场和车间交互各种各样的工程建筑与产品制造信息。使得中国在数字化工程设计上的设计效率普遍提高。成为中国工程师首选的工程制图软件。AutoCAD 软件也为中国的改革开放和社会主义现代化建设创造了丰功伟绩。AutoCAD 还为 Autodesk 公司的技术在建筑、基础设施、制造、媒体和娱乐以及无线数据等各个行业中的领先铺平了道路。AutoCAD 的出现确立了Autodesk 公司在软件业霸主的地位,赢得了全世界人民的广泛赞誉和充分肯定。但是随着AutoCAD软件在各领域的广泛使用,一些问题也开始逐渐出现,其中最突出的就是文档保护问题。众所周知,每一张工程图纸都是工程师们的智慧结晶,关系了公司的最直接利益。每个公司都把工程图纸当作最机密的文件,一旦泄露到竞争对手手中,将给公司带来无法估计的损失。但是一直以来都缺少一些行之有效的手段来对这些文件进行保护。因此我们的项目就是要开发一个比较有效的工具,对CAD文档进行保护,以期对这种现状进行改变。1.2 国内外相关领域开发及应用现状分析1.2.1 主流文档编辑软件的保护措施文档编辑软件基本上都附加有访问控制和数据保密功能,而且大多数的文档信息安全方案实施都基于此2。在我们常用的各种文档编辑软件,比如Microsoft 公司的Office 系列文档编辑工具、Adobe 公司 Acrobat PDF 文档编辑阅读器,以及zip或RAR 压缩格式文件夹等等都自带了多种数据保护功能。但是,这些文档编辑软件所提供的安全保护无论是从强度上还是功能上都不能满足用户的需求。从保护强度上来说,针对主流文档编辑软件的密码保护功能,相应的破解工具可以轻易的获得。比如Passware Password Recovery Kit 等。从安全功能上来说,现有编辑软件所提供的安全功能简单,一般都是通过对称加密实现文档的保密性,而且通过用户对密钥的记忆实现所谓的访问控制。即使实现了部分权限管理功能的最新版本的MS OfficeWord,其权限管理功能也十分容易破解。但是针对WORD、PDF等格式的文档,已经存在了许多专业的文档加密工具,通过这些工具我们可以实现比较有效的文档保护。1.2.2 AutoCAD自带安全功能分析AutoCAD自带的安全功能主要包括以下几种方式:(1) 自带口令安全AutoCAD 自带的口令安全选项和Word 口令安全选项大体相同,通过市面上存在的一些针对Word的破解软件,我们不难发现想做出针对AutoCAD的破解软件并不是十分困难。(2) 电子传递电子传递功能让用户可以把当前的图形和相关的文件打包到一个单独的传选集中,它可以帮助用户将图形文件打包,以加密的形式在互联网上传送。(3) Autodesk StreamlineAutodesk Streamline 为工程提供了一种易于使用的宿主环境,它可以帮助用户安全地共享设计和工程数据、更有效地进行协作并改善整个产品生命周期内的业务流程。通过以下三种方式为用户的设计数据提供安全保护:验证、访问控制和加密3。1.2.3 开发及应用现状分析通过对市面上流通的一些相关加密软件进行分析,不难发现,大多数软件所使用的保护措施主要通过以下几种形式。(1) 权限控制通过限制用户的一些操作来实现文档的保护,这样难免在使用软件的过程中带来一定的不便,而且破解方法也比较多。(2) 密码控制通过设定密码来保护文档,市面上存在很多密码破解程序,通过这些软件,可以在很短的时间内破解由数字、字母构成的密码。(3) 禁止网络,部分硬件的使用同样,给用户带来很大的不便。由于CAD图是一种是矢量图,同标量图相比,要在矢量图里嵌入信息具有比较大的难度5。对于矢量图形的一些加密处理技术还不够成熟,因此直接对CAD文档进行数字加密技术应用的比较少6。1.3 本文研究的主要内容本文主要研究如何通过使用一些比较行之有效的方法,对CAD文档进行一系列的保护工作,包括权限管理,文档置乱,篡改提醒,信息隐藏等我的工作的重点在于如何对文档中的图形,文字等实体要素进行处理,通过一些加密手段,使图纸信息可以得到保密。同时还不应该破坏文档本身的内容,通过解密操作,可以使文档得以还原。本文主要针对以下内容进行了研究:(1) 用户监控模块的设计与实现;(2) 文档置乱以及还原模块的设计与实现;(3) 置乱算法的研究分析;(4) 程序与AutoCAD软件的兼容。第2章 系统需求分析和整体框架2.1 主要开发内容由于CAD文档的重要性,针对CAD文档的一些泄密事件也层出不穷。虽然已经有了一些加密软件,但是总体效果并不是十分理想,破解方法比比皆是。我们系统的整体开发内容就是开发出一个全面,有效的针对CAD文档的保护系统,通过这个系统,用户可以比较方便地对CAD文档进行保护工作,同时也不会影响到平时的工作。针对CAD文档的保护方法,我们的系统主要可以分为下面几个主要模块,见图2-1。图2-1 系统整体模块其中权限控制模块就是通过控制用户的权限来保护文档。信息隐藏是在对一些重要信息进行加密隐藏。篡改提醒通过对文档内部实体元素进行一种不可逆的映射,通过比较映射关系,可以很有效的文档是否被他人恶意修改。本人所负责的模块为文档置乱模块。这个模块需要实现的主要功能就是在文档保存的时候,对其内部的图形实体元素,文字标注等信息进行一种可逆的转化。用户只有在特定的环境下,才可以对文档解密成功。这样就可以使这个文档在脱离了特定环境时,不会将信息泄露。2.2 需求分析由于项目的分工,我对其他模块的了解并不是十分深入。接下来,我就仅对我所负责的模块进行分析。文档置乱模块根据自身的功能还可以分为几个小模块,主要包括:用户监视模块,文档转换模块,实体置乱模块(根据各种实体的不同,还可以进一步细化),信息加密模块,文档恢复模块。我们力求令整个系统的工作对用户都是透明的,用户在使用软件的过程中,甚至感受不到文件正在被加密解密。本模块主要在用户关闭,打开文件的时候进行工作。2.2.1 用户监控模块功能需求本系统需要作为一个插件嵌入到AutoCAD软件中,在用户进行关闭,另存为,打开等操作的时候,调用整个文档置乱模块。通过本模块,系统可以捕捉到用户的操作,在进行相应操作的时候系统进行相应的处理。2.2.2 文档转换模块功能需求我们的系统是建立在DXF格式文件的基础上的。AutoCAD文件是以DWG格式进行储存,通过对DWG文件的研究,我们发现Autodesk公司对DWG文件进行了很好的保护。我们从DWG文件中得到的仅仅是很紧凑的二进制代码,如果直接对这些二进制代码进行加密的话,需要非常大工作量的计算,这是用户所无法忍受的。这个模块提供了一个将DWG格式文件与DXF格式文件之间的相互转换。AutoCAD软件产生的图纸文件是DWG格式,DXF是一种开放标准的矢量图形文件,我们的系统通过对DXF文档进行相应操作,然后转换成DWG格式文件。2.2.3 实体置乱模块功能需求CAD图纸是由各种实体元素构成的,例如点、线段、各种图形、文字标注等。这个模块的功能就是针对各种不同的元素,进行不同的可逆的置乱操作。并将置乱过程中所用到的辅助信息存储起来。具体功能主要包括:(1) 点坐标的处理(例如直线的起点,终点)(2) 长度的处理(例如圆的半径长度)(3) 复杂图形的处理(例如正多边形的处理)(4) 标注的处理(包括静态标注、动态标注等)(5) 文字信息的处理2.2.4 信息加密模块功能需求在实体置乱的过程中,将产生许多信息,例如运算用的矩阵。通过这些信息,可以对文档进行恢复。因此需要在对文档进行处理后对这些信息进行储存。这些信息如果以明码的方式进行储存,这样就非常容易被破解,因此我们需要对这些信息进行加密处理。2.2.5 实体恢复模块功能需求在用户打开文件的时候,这个文件其实已经是经过置乱的,如果直接返回给用户,用户是没办法得到有用的信息的。因此,我们需要在用户打开文件的时候,对文档进行恢复工作。2.3 系统整体框架本系统致力于保护CAD文档的安全,而CAD文档的安全性问题主要是人为造成的。因此我们的系统通过用户监控模块来对用户的行为进行监控,然后调用其它的相关模块对CAD文档进行保护工作。用户监控模块贯穿于整个过程。系统整体框架如图2-2所示。图2-2 系统整体框架其中用户监控模块用于对用户行为进行监控,当用户作出类似于保存,打开,关闭等操作时,该模块截断AutoCAD软件的命令,然后调用我们的系统模块对文档进行保护。文档转换模块用于将DWG文件转换成可供我们处理的DXF文件。文档处理模块的主要功能是对安全性较低的文档进行处理,使其内部的实体进行一种可逆性的转换,使文档信息得到保护。2.4 本章小结本章对我们所开发的系统,以及本人所负责模块进行了简单的介绍。确定了系统的功能需求,使我们对系统的有了比较直观的了解。然后还给出了系统的一个整体框架,以方便理解我们系统的工作原理。第3章 用户监控模块的设计与实现我们所开发的内容包括文档置乱,篡改提示,数字印章等模块,这些模块都需要面临着一个共同的问题,在什么时刻运行我们的程序,如何在这些时刻运行我们的程序。这个问题如果无法解决,那么其他功能都无法有效地实现其作用。因此本模块是其它模块正常运行的一个前提,不仅我所负责的模块需要使用到,其他模块也将使用到这个模块的功能。本模块所要实现的功能是对用户的行为进行监控,在用户做出某些操作,比如关闭文档,另存为,打开文档的时候,截获系统传递的消息,并做出相关操作。在具体实现方法的选择上,我们考虑了2个方法,一个是使用Windows钩子函数,另一个是ObjectARX反应器。3.1 Windows钩子函数Windows的钩子函数可以认为是Windows的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给Windows一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,Windows都将调用该函数7。一共有两种类型的钩子:局部的和远程的。局部钩子仅钩挂你自己进程的事件。远程的钩子还可以将钩挂其它进程发生的事件。远程的钩子又有两种:基于线程的它将捕获其它进程中某一特定线程的事件。简言之,就是可以用来观察其它进程中的某一特定线程将发生的事件。系统范围的将捕捉系统中所有进程将发生的事件消息。安装钩子函数将会影响系统的性能。监测“系统范围事件”的系统钩子特别明显。因为系统在处理所有的相关事件时都将调用您的钩子函数,这样您的系统将会明显的减慢。所以应谨慎使用,用完后立即卸载。还有,由于您可以预先截获其它进程的消息,所以一旦您的钩子函数出了问题的话必将影响其它的进程。记住:功能强大也意味着使用时要负责任。钩子函数根据事件又可以分成以下几种类型:(1) 键盘钩子和低级键盘钩子可以监视各种键盘消息。 (2) 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。 (3) 外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。 (4) 日志钩子可以记录从系统消息队列中取出的各种事件消息。 (5) 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。这些钩子,几乎可以覆盖了所有的Windows操作。但是使用钩子函数将会面临许多问题:系统移植问题这边所提到的钩子函数,主要指Windows钩子函数,当我们的系统需要在其他操作系统进行工作的时候,比如在LINUX下,那么,我们的系统是否可以工作呢,我们是否需要对钩子函数重新进行编写呢进程问题如果我们使用了局部钩子,将需要对AutoCAD本身的进程进行修改,嵌入钩子函数,这样无疑难度是比较大的。使用远程钩子,将需要建立一个新的进程,对AutoCAD进程进行监控,那么,如何通过这个进程来控制AutoCAD的进程,如何防止用户通过终止进程来取消监控,都将构成较大的问题。技术问题由于之前没有接触过钩子函数,因此需要从头开始学习,需要多长时间才能掌握这项技术,这是无法估计的。因此,技术方面所带来的风险其实是相当大的。3.2 ObjectARX反应器ObjectARX中的ARX表示AutoCAD的运行时扩展(AutoCAD Runtime eXtension)。ObjectARX是一个综合的API(Application Programming Interface),他包含了将200多个类和3000多个函数8。ObjectARX反应器其实也可以算是一种钩子函数,与Windows钩子函数不同的是,他是以类似于插件的形式,嵌入到AutoCAD程序中.其所监视的事件,也是针对一些AutoCAD所特有的事件。经常使用到的ObjectARX反应器主要有以下几种类型:(1)数据库反应器AcDbDatabaseReactor:数据库反应器监视在AutoCAD数据库范围内的事件,例如添加或去除实体。(2)AutoCAD 编辑反应器AcDbEditorReactor:编辑反应器监视在用户编辑图形文件时发生的事件,例如发出命令,或关闭一个当前的活动。(3)对象反应器AcDbobjectReactor:对象反应器可以监视在指定对象被更改、复制或删除时发生的事件。(4)AutoCAD 文档管理反应器AcApDocManagerReactor:从R2000以来,AutoCAD 是一个多文档环境。文档管理反应器监视在MDI模式下图形文档窗口事件,例如打开、关闭、切换图形文档等等。从上述分类中,我们不难发现,ObjectARX反应器跟Windows钩子函数有着很大的区别。Windows钩子函数是一个非常通用的技术,可以说,他可以对在Windows下运行的所有程序进行控制,功能确实非常强大。但是,正因为他的这种广泛性,当我们具体到某一个程序的时候,对于一些简单事件的控制可能很简单。但是碰到一些比较复杂的事件,我们就需要去了解这个软件本身的流程,因此我们可能需要进行十分复杂的编程才能实现我们所需要的功能。相比之下,ObjectARX反应器只使用于AutoCAD的二次开发。如果单纯的只是进行AutoCAD开发,ObjectARX反应器不但实现了Windows钩子函数中所实现的功能,而且还在此基础上,进行了扩展,实现了许多更加直接的功能。从编程的角度上讲,ObjectARX所提供的是类以及方法。因此要构造一个反应器,仅仅需要对一个类型反应器的父类进行继承,然后对方法进行重写。这样,大大降低了我们的编程难度。综合以上因素,使用ObjectARX反应器来实现用户监控模块是一个比较好的选择。3.3 设计与实现本模块主要要对2种类型的操作进行监控。一类是直接传递命令的操作,比如另存为,这种操作是直接在当前窗口进行操作。另外一类是对文档的直接操作,比如关闭文档,这类操作是需要在窗口外部进行操作。针对这2中不同类型的操作,我们使用了2种反应器,AutoCAD 编辑反应器和AutoCAD 文档管理反应器在用户打开AutoCAD的时候,我们的程序自动加载了插件,并建立反应器。当用户作出相关操作的时候,根据操作类型的不同,调用相关反应器,通过反应器,调用其它相关模块的操作,具体流程如图3-1所示。图3-1 用户监控模块流程编辑反应器AcDbEditorReactor用于监视在用户编辑图形文件时发生的事件,例如发出命令修改一个图形元素,或关闭一个当前的活动。文档管理反应器AcApDocManagerReactor用于监视在MDI模式下图形文档窗口事件,例如打开、关闭、切换图形文档等等。在本系统中,使用编辑反应器的地方主要在用户对文档进行保存操作时对文档进行置乱操作,对CAD文档进行修改时记录其修改历史,进行篡改保护。使用文档管理反应器的地方主要在用户打开一个新文档,或者对一个文档进行关闭操作是对文档进行置乱操作。类图如图3-2所示。图3-2 用户监控模块类图其中EditRectorApp类用于控制2个反应器的加载和删除。该类使用方法On_kInitAppMsg()在程序被AutoCAD加载的时候,创建2个反应器。当AutoCAD删除我们的插件,使用On_kUnloadAppMsg()方法,对反应器进行卸载,以释放资源。AcEditorReactor类用于创建一个编辑反应器。方法commandWillStart()用于在一条命令被执行前,截断命令,并进行相应操作。commandEnded()用于在命令执行完毕后,恢复当前操作。commandCancelled()用于用户取消一条命令后回到上一条操作。AcApDocManagerReactor类用于创建一个文档管理反应器。其中方法documentCreateStarted()用于在文档打开前,对文档进行恢复操作。当一个文档被关闭时,调用documentToBeDeatroyed()对文档进行置乱操作。3.4 运行结果由于本模块主要是后台运行,并没有直观的界面,因此我们在测试的时候,加入了若干语句,在AutoCAD软件运行的命令行中显示程序运行的过程。首先通过AutoCAD命令appload加载生成的ARX文件。加载成功后,在命令行窗后中会出现加载成功的提示,同时分别创建了2个反应器,结果如图3-3所示。图3-3 加载用户监控模块其中appload是AutoCAD自带命令,用于控制对应用程序的加载与卸载等操作。当2个反应器创建成功后,分别显示提示信息。加载完毕后,就可以监控用户所作出的动作。我们进行一次文档另存为操作。程序捕捉到命令,然后截断命令的运行,然后对文档进行置乱操作,操作后继续保存命令。运行结果如图3-4所示。图3-4 进行另存为操作时的后台显示其中命令saveas是AutoCAD自带命令,代表对文件进行另存为操作。在发出此条命令后,被程序截获,显示准备保存文档。然后对文档进行置乱操作。置乱完成后,继续执行另存为命令,保存完毕后,显示文档保存完毕。当要关闭软件时,应当对反应器进行卸载,同样通过appload命令来进行,卸载结果如图3-5所示。图3-5 卸载用户监控模块3.5 本章小结本章首先介绍了用户监控模块的详细功能以及其重要性,然后给出了2种可行性方法:Windows钩子函数以及ObjectARX反应器。通过对2种方法的研究比较,最后选定了ObjectARX反应器来实现用户监控模块。最后给出了整个程序的简要流程图,以及用于实现程序的类图。该模块是实现整个系统的一个基础,为以后的工作提供了很多必要的支持。第4章 实体置乱和恢复模块4.1 实体置乱模块的设计本部分是系统的一个比较关键的部分,通过对CAD图纸内各种实体,如点,线,多边形等进行置乱变换,来破坏原有图纸的信息,从而起到保护作用。我们首先从文档中,提取出各种实体的信息,再对这些实体进行分类,对不同类型实体进行不同的置乱操作。具体流程见图4-1。图4-1 实体置乱模块流程提取出实体并进行分类后,对于不同类型的实体,处理方式以及处理难度都有所不同。如何实现一种速度,安全性都较好的算法是我们所需要研究的内容。在很多情况下,两者是有冲突的,安全性高的处理方式,难免造成处理时间上的延长,处理速度快的算法,安全性又无法得到保障。4.1.1 点的处理我们采取了分组置乱的方式,将所有点的坐标分成16个一组,先对这16个坐标进行处理,打乱其顺序,然后构成一个4*4的矩阵。通过对矩阵进行数学运算,进一步对实现置乱功能。完成后,将矩阵的元素分配到各个点中。其流程如图4-2所示。图4-2 点处理流程4.1.2 线的处理在CAD文档中,线的存储是由2个点构成的,因此对线的处理与对点的处理很相似。只要对线的起始点和终止点的坐标进行变换,就可以实现线的变换。同样,在处理线上,我们采用分组置乱。我们所需要考虑的是一些特殊情况的出现,比如线段的2顶点出现重合现象。如果一条线段的2个顶点出现重合,在储存文档的时候,将会出现严重的错误。虽然在实际运行中,出现这种情况的概率还是比较小的,但是我们仍然有必要对这类情况进行处理。处理过程如图4-3所示。图4-3 点处理流程4.1.3 多边形处理这部分的处理也是整个系统的一个难点。例如画一个最简单的正方形,在AutoCAD中我们只需要拉出一条直线,然后选择一个方向,就可以画出一个正方形。但是,在文件中,其存储的并不是一条线和一个方向,而是存储了4个点。如果只是对这4个点进行简单的点变换,这样结果肯定不能不保持一个正方形,这样系统就会出现错误。因此,在处理这类图形的时候,需要保持图形的原有性质,系统才不会出现错误。我们首先对图形的一个顶点进行点处理置乱,然后获取边的角度长度,对角度和长度进行变换,然后根据顺时针方向,计算出其余各个点的坐标,然后保存这些坐标。当然,这样做无法避免一个数字精度的问题,或多或少会出现一定的数字误差,但是这个问题在计算机中始终是无法避免的,包括通过AutoCAD直接进行画图。我们所能做到的是提高数字精度,精确到小数点后的10位,这样就可以最大程度上的减少误差。具体流程如图4-4所示。图4-4 多边形处理流程在具体实现中,对于不同类型的图形,需要调用不同的数学公式对坐标进行计算,这部分的工作量是比较大的。4.1.4 块的处理在AutoCAD中,存在一类特殊的元素块,块就是把几个简单实体集合到一起,形成一个新的实体。对于这种实体的置乱,不但要在块的位置上进行处理,还需要对块里面的每一个实体进行处理在对块进行处理前,首先要弄清楚2个概念,一个是块定义,一个是块参照。块定义就是一个块的实际存在。在AutoCAD中所有的实体都保存在块表记录中,而块表记录则存储在块表中9。实际上,用户在AutoCAD中定义块相当于增加了一个块表记录,块表记录的名称就是块定义的名称。块参照是对块定义的引用。块定义不是一个实体,而是一种对实体的描述,通过定义块获得;块参照则是一种实体,图形窗口中显示的“块”都是块参照,通过插入块获得。在ObjectARX 编程中,块定义通过块表记录来保存,而块参照由AcDbBlockReference类来表示。通过图4-5,可以较直观地理解块参照和块定义的关系。线圆块参照线块参照圆圆块参照块参照块定义1线圆弧线块定义2圆线弧线图4-5 块参照与块定义的关系块参照可以看成一个实体,有坐标,比例等属性。块参照指向一个块定义,块定义以一个块表记录的形式存在里面包含了实体的集合。同时可以有多个块参照指向一个块定义,在图纸上显示为由多个块的副本存在。做为一个实体,我们可以同处理其他实体的方式一样,在遍历块表的时候,可以读取到块参照,这时候,就可以对块进行置乱处理。我们首先将块里面的实体单独提取出来,对每个实体进行单独置乱。然后,将这些实体再次集合成一个块,然后对块的整体进行处理。具体流程见图4-6。图4-6 块处理流程在实际开发过程中还存在一个问题,块定义作为一个块表记录存在,里面可以包含许多实体,那么应该也是可以包含块参照,这样就出现了块中间还有一个块。虽然在实际应用中,这种情况可能不多见,但是也应该考虑到。可以使用递归的方式来处理。4.1.5 图纸边界处理作为每一张CAD图纸,都有一个图纸边界,我们需要确保所有的坐标都位于这个边界之中。当我们对坐标进行变换完毕后,我们还需要对坐标进行判断,是否超出了图纸的边界,如果超过了边界,那么也是不允许的。我们考虑了使用取模的方法来进行处理,但是要判断一个坐标是否是一个超出边界的坐标,需要设定一个标志位来进行判断,这样加大了存储空间。幸好,通过算法上的优化,可以最大限度上来避免数字过大而超过边界的情况出现因此我们可以通过进行一次新的置乱过程来处理。4.1.6 其他相关属性处理在CAD图纸中,每一个实体不仅仅只有长度,坐标等属性,还包括了线条的颜色,线条的粗细等属性。有些情况下,这些属性也可能泄露出一些比较重要的信息,因此在这些情况下,应该可以对这些属性也进行保护。我们把这些功能做成可选项,当用户需要对这些属性进行置乱的时候,就可以选择相关选项,而大部分情况下,为了节省计算机的资源,这些选项是可以不用的。4.2 实体置乱模块的实现4.2.1 实体置乱模块的程序实现实体置乱模块是整个系统的重点,也是最大的难点,在实现的过程中,我们付出了很大的努力。其类图如图4-7所示。其中DisorderApp类用于程序的初始化以及卸载,当程序被AutoCAD软件载入的时候,调用initApp()方法,对各个置乱类进行初始化,在软件中注册命令等操作。卸载程序时,调用unloadApp()方法,对删除各个类的注册。acrxEntryPoint()方法用于对实体进行定位。OpenDB类用于打开并建立一个实体数据库。其中getBlockTable()方法用于获得并

    注意事项

    本文([优秀毕业论文]基于DXF格式CAD文档保护系统置乱模块设计与实现.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开