江西理工大学2012届专科生毕业设计(论文)
此我们可以参考传统签章的发展历程,总结出电子签章最本质的特性和意义,并根据AutoCAD特定的应用环境,设计出更为合理的电子签章。
从传统签章到普通电子文档中的签章,再到AutoCAD电子图纸中的签章,签章的功能应该是一脉相承。因此,我们提出AutoCAD电子签章的功能需求如下:
(1)能够对AutoCAD电子图纸进行签章,以表明签章人的身份。 (2)接收方能够对已签章图纸进行验证,证明图纸内容的完整性和签章人
身份的真实性。
(3)在整个签章和签章验证的过程中,我们必须保证AutoCAD图纸的可
用性,即能够对图纸进行正常的编辑,保存等操作。
3.1.2相关法律法规:
电子签章属于电子签名的一种,应该遵循国家相应的法律法规,才能被国家承认,被用户信任。在《中华人民共和国电子签名法》[9]中,关于电子签名与认证,有如下几条主要规定:
第十三条 电子签名同时符合下列条件的,视为可靠的电子签名:电子签名制作数据用于电子签名时,属于电子签名人专有;签署时电子签名制作数据仅由电子签名人控制;签署后对电子签名的任何改动能够被发现;签署后对数据电文内容和形式的任何改动能够被发现。
第十六条 电子签名需要第三方认证的,由依法设立的电子认证服务提供者提供认证服务。
可以看出,签名体现了以下几个方面的保证,也是本课题在系统设计时必须达到的五个安全性要求:
(1)签名是可信的
签名使文件的接收者相信签名者是慎重地在文件上签名的。 (2)签名是不可伪造的 签名证明是本人而不是其他人。 (3)签名不可重用
签名是文件的一部分,不可能将签名移动到不同的文件上。 (4)签名后的文件是不可变的 在文件签名以后,文件就不能改变。 (5)签名是不可抵赖的
签名和文件是不可分离的,签名者事后不能声称他没有签过这个文件。
14
江西理工大学2012届专科生毕业设计(论文)
3.2系统设计方案 3.2.1电子印章的生成:
电子签章的存在形式,标量签章与矢量图之间不能做到完全兼容,给用户的使用上带来极大不便,因此在本方案中提出了矢量电子签章来解决这一问题。关于矢量电子签章的来源有两种:
(1)根据用户需求绘制印章
用户可以把自己对印章的要求用数据描述出来,如印章的大小,章内文字,图案等。程序保存这些配置信息,在需要时从程序中读取这些数据,调用AutoCAD的绘图命令绘制出签章。经过实验,绘制出的典型签章如图3.2.1所示:
图3.2.1 用Visual LISP绘制出的印章
(2)将独立的矢量签章文件插入到当前图纸
为了最大限度地让电子签章接近于现实,我们可以将实际印章的图像转换成矢量格式,复制到需要签章的矢量图纸中去。在这种实现方式中,我们需要用扫描仪将纸质文档上的印章图像输出成位图文件,再用矢量化软件将其转换成DWG格式的矢量图。用户签章时,提供自己独有的DWG格式的签章文件即可。经过ICT实验室的允许,扫描出来的ICT印章。
通过比较两种实现方式,论文选择的是制图方式生成电子签章。主要有以下两点原因:
(1)制图方式形成的签章更加形象,贴近实际形象。
(2)在定制签章方法中,电子签章系统需要维护许多配置信息,而且用户根据有限参数描述出的签章也不一定令自己满意。比如签章周围出现的纹理信息,如果利用方法2绘制出来就需耗费更多的物力人力。
15
江西理工大学2012届专科生毕业设计(论文)
3.2.2系统方案分析:
方案中的电子签章具有以下特性: (1)完整性
如果图形文件(包括签名时间、签署意见)在相互传输过程中被修改或者伪造,则接收者计算散列值与原有的散列值不同,数字签名不能通过;反之,接收到的图形文件与源文件是一致的。
(2)身份认证
验证方只有使用签章人的身份证书才能验证其签署后的图纸的有效性,从而确定签章人的身份。
(3)不可抵赖性
签章人不能抵赖他对图纸的签署行为,因为他人无法伪造电子签章的签名信息。
(4)专业性
二次开发是针对特定用户进行的,因此开发人员要既懂专业知识,又要具备软件开发能力;
(5)实用性。
二次开发是为了满足特定用户的特殊需要,因此成功的二次开发可以大幅度提高工作效率;
(6)紧迫性。
二次开发要解决的是实际工作中遇到的问题,直接影响工作的进度,因此在时间上有紧迫性;
(7)复杂性。
二次开发不仅涉及具体的应用,而且要求对支撑软件有深入的了解,因此工作量大,任务复杂。
(8)直观性
由于图纸的签章和验证是在AutoCAD环境中实现的,所以用户能够在看到图纸的情况下实现图纸的签名和验证。
(9)高效性
AutoCAD二次开发工具ObjectARX具有合理的设计架构,它共享AutoCAD软件的图形数据库,使开发人员能够开发出高效的应用程序。
16
江西理工大学2012届专科生毕业设计(论文)
第四章 电子印章插件的实现
4.1 印章的制作方法
目前绝大多数的电子签章产品是基于标量图实现的。它有传统的标量图的理论支持,已经发展的比较成熟。市场上也有一些矢量图电子签章产品将标量图签章嵌入到矢量图纸中。但是,矢量图纸和标量签章在视觉上并不能做到很好地兼容。矢量图经过放大后仍然保持很好的视觉效果,而标量签章在放大若干倍后就会受到分辨率的制约。另外,AutoCAD等矢量图绘图软件中嵌入标量图是通过嵌入标量图的绝对路径来实现的。标量图无法和矢量图纸融为一体。根据用户需求,绘制电子签章用户可以根据实际的需求提出电子签章的具体参数,例如章体的大小、章内文字和字体、章体布局等[11]。根据用户提出的需求,可以在AutoCAD下利用相关绘图命令绘制出矢量电子签章。通用的方法可以利用AutoCAD的二次开发程序保存相应配置信息,在需要签章的时候绘制出所需要的矢量电子印章。在前面的章节中已经提到,课题中选择的是制图方式生成签章文件。这个过程中需要用到AutoCAD软件。电子签章的生成过程,制作方法可以分成以下四步:
(1)日期模块的制作
利用Visual LISP语言编写程序,达到该程序能够成功的按照用户输入的要求运行,成功的将日期显于在AutoCAD的绘图区域。
(2)五角星模块的制作
利用Visual LISP语言编写程序,通过加载,达到该程序能够成功的将五角星图案显现在AutoCAD的绘图区域。
(3)印章轮廓模块的制作
利用Visual LISP语言编写程序,通过加载,达到该程序能够成功的将印章的轮廓图案显现在AutoCAD的绘图区域。
(4)电子印章的生成
通过将前面三个模块编写的程序合并到一起,经调试,检验成功后,加载到CAD内存中,达到该程序能够成功的将电子印章的图案显现在AutoCAD的绘图区域,至此电子印章成功实现。
17
江西理工大学2012届专科生毕业设计(论文)
4.2 印章子模块的实现 4.2.1 日期模块的实现
机械绘图中经常需要在标题栏等处需要输入日期,通常手工书写时很方便,然而在AutoCAD中我们必须先选定需要书写日期的区域,然后通过设定再将所需要的日期输入。如果多次反复执行这些操作,会明显限制绘图的速度。下面使用Visual Lisp编写简单的程序,既可以满足要求,也可以反复使用,方便快捷。
日期模块编写的程序如下: (defun C:inttime()
(setq p1 (getpoint \请指定插入位置点 :\ (setq wz (getstring\请输入日期\
(command \ wz \ (princ) )
演示上述程序,首先我们将AutoCAD软件打开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:inttime的命令,系统会要求我们选择插入点的位置,我们只需利用鼠标拾取一点,系统会自动的在拾取点的位置上显示出准确的日期。如下图所示:
图4.2.1 程序执行示意图
图4.2.2 日期模块的实现
4.2.2 五角星模块的实现
在机械绘图中我们经常发现某些常用的动作在AutoCAD中确变得非常复
18