计算机科学与技术在线考试系统56专业毕业论文.doc

上传人:sccc 文档编号:4863449 上传时间:2023-05-20 格式:DOC 页数:13 大小:113.02KB
返回 下载 相关 举报
计算机科学与技术在线考试系统56专业毕业论文.doc_第1页
第1页 / 共13页
计算机科学与技术在线考试系统56专业毕业论文.doc_第2页
第2页 / 共13页
计算机科学与技术在线考试系统56专业毕业论文.doc_第3页
第3页 / 共13页
计算机科学与技术在线考试系统56专业毕业论文.doc_第4页
第4页 / 共13页
计算机科学与技术在线考试系统56专业毕业论文.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《计算机科学与技术在线考试系统56专业毕业论文.doc》由会员分享,可在线阅读,更多相关《计算机科学与技术在线考试系统56专业毕业论文.doc(13页珍藏版)》请在三一办公上搜索。

1、毕业论文浮动License工具设计与开发北京工业大学软件学院学 号:03080226姓 名:刁 柯任务书北京工业大学学生开题报告表课题名称浮动License工具设计与开发课题来源课题类型导 师蔡建平学生姓名刁柯学 号03080226专 业软件工程调研资料的准备:分析基于JAVA语言的Jlicense和基于C语言共享软件保护技术和上网相关的技术资料。设计目的:实现基于C/C+语言的floating license生成与解决方案要求:设计并实现浮动 licenses 生成软件设计并实现浮动 licenses 服务端设计并实现浮动 licenses 客户端思路:设计完成浮动licenses 生成器,

2、生成的license保存于加密CA文件;浮动licenses CA文件,为局域网floating licenses配给服务端的运行提供静态证书验证;设计完成浮动 licenses服务端,为局域网内客户端提供动态验证与互斥机制;设计完成浮动 licenses 客户端以提供功能示例;浮动licenses CA文件,为局域网floating licenses客户端的运行提供动态证书验证。预期成果:由三个模块(生成器/服务端/客户端)组成的软件使用权保护系统任务完成的阶段内容及时间安排:3月11日 - 阅读、分析与理解单机License源码,掌握单机License的工作原理(一周)3月18日 - 建立

3、License的网络开发与运行环境(一周)3月25日 - 基于浮动License的工作原理进行软件设计(二周)4月08日 - 编程实现浮动License工具(五周)4月08日 - 撰写浮动License工具实现的技术文档和毕业设计论文(五周)其中五月工作实习半个月,故5月底或6月初完成完成设计(论文)所具备的条件因素:无指导教师签名: 日期:课题类型:(1)A工程设计;B技术开发;C软件工程;D理论研究; (2)X真实课题;Y模拟课题;Z虚拟课题 (1)、(2)均要填,如AY、BX等。中文摘要、关键词 浮动许可浮动许可证允许多名用户共享许可。许可安装任何终端可连接的网络上。软件可加载确定的终端

4、数量,驻存在网络上的许可数管理系统确定用户数量并分配许可。只要一名用户退出该软件,许可即对另一名用户开放。浮动许可有利于共享软件:最大化每一许可的使用减少单位或个人所需的许可数量有限期浮动许可使用一定时间内的有限期浮动许可可以满足单位或个人时限内的需要,可购买有限期许可大大降低使用软件的成本。锁定许可终端上安装永久性软件许可密钥,可保证随时能投入工作。本课题意在编程实现以上三种软件许可形式。英文摘要、关键词 Floating LicenseFloating license capability allows many users to share licenses. A license ins

5、talled on the license server is available to any PC that is connected to the network. Install the software on as many PCs as you like, and the number of licenses that reside on the network determines the number of users at any moment. When one user exits the software, that license becomes available

6、for another user. Permanent floating licenses facilitate sharing of software so you can: Reduce cost by getting more usage from fewer licenses. Maximize the use of each software license.Limited Term Floating LicenseUsing limited term floating license. If your need is temporary, you can acquire a lim

7、ited term license to operate the software at a significant cost savings. Node-Locked LicenseA license with node-locked licensing your software will make your software always be ready to run. The issue is intended to implement these three styles of software licensing above.目录1. 绪论- - - - - - - - - -

8、- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6 1.1课题背景- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 1.2浮动许可证现行概况- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

9、- - - - - - - - - - - - - 6 2. 浮动许可证- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 62.1 浮动许可证原理- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 62.2 主要技术点 - - - - - - - - - - - - - - - -

10、 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -8 2.2.1 流套接字 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8 2.2.2 3DES加密技术 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

11、- 9 2.2.3 FSTREAM I/O文件操作 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -102.3 实例 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 课题总结- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

12、 - - - - - - - - - - - - - - - - - - - - - - - - - 10 致谢- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 11 主要参考文献- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 11

13、附录- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 12 1、绪论11课题背景就软件的发行方式来说,一般地说,对于通用性软件,除了商业性销售之外,社会上还存在其他发行方式。如果按照发行方式分类,计算机软件事实上存在商业软件、自由软件、试用软件和公有软件等四类。计算机软件作为一种知识密集型的商品化产品,在开发过程中需要大量的人力、物力和财力,为开发程序而付出的成本往往是硬件价值的数倍乃至数百倍。然而,从

14、软件的诞生开始,非法复制问题就一直困扰着软件生产商们,一项凝聚着众多技术人员多年脑力劳动的产品却在很短的时间被非法复制,这将会造成生产商的重大损失。由此软件保护技术应运而生。当今被最广泛使用的软件保护技术就是软件许可证技术,使用它能很大程度上防范软件的非法使用、复制、修改等等。为了保护软件版权,维护所有者利益,以及更好的对软件进行使用与管理,软件的生命周期需要运行于软件许可证协议之上。根据上述软件分类,软件许可证包括:商业许可证企业或个人不希望发布应用程序的源代码,即不希望将其作为开放源码/免费软件,或者不愿遵守GNU GPL,需要选择该种许可证方案。 自由软件许可证以GUN GPL为代表的自

15、由软件许可证协议。开源软件许可证对于那些进行开放源码应用程序的开发人员而言,可以将其软件在一个开放源码/免费许可证方案下进行发布,受许可人员可以对其进行使用、修改或发布。软件许可证又可以分为终端许可证(Node License)和浮动许可证(Floating License)。单机的终端许可证一般使用绑定计算机某一特征值进行验证而确定用户权限是否合法,浮动许可证则是在网络中通过一服务端验证和管理客户端的许可证。12浮动许可证现行概况计算机网络软件加密无可避免地涉及到网络技术,浮动许可证技术,又被称为网络许可证技术正是为适应这一需要而产生,并带来比单击许可证更好的安全性与更多的便捷性。首先,许可

16、证的验证基于网络,验证地点位于远端,这使得破解许可证的难度增大,并且服务端可以便利的监控和管理辐射出去的客户端许可证,进一步确保安全。其次,企业或个人可以通过购买制定共享数的浮动许可证代替大量单机许可证,以此来减少购买使用软件的开销。更重要的,浮动许可证可以应用于开源/自由软件的网络协作式开发与共享,最大限度的延展许可证技术的功能优势。基于以上几点,IBM,SUN,Intel,Rational,ACDsystem等等公司开发的软件产品都越来越多的将浮动许可证版本投放市场,大量开源软件也使用浮动许可证技术进行软件的共享与开发,基于BS结构的网络服务更是优先使用了此技术以实现网络软件应用中的身份识

17、别。2、浮动许可证21 浮动许可证原理通过网络上至少一个许可证服务器为一个或多个本地或远程客户端服务,是一种客户端/服务器(C/S)结构。每个客户端只要通过许可证管理器指定一个或多个许可证服务器名称(主机名或 IP 地址)就可以通过网络使用该许可证服务器所提供的产品服务。部署结构拓扑图如上图所示为浮动license实现部署的拓扑结构。整个系统由开发商设置好后交用户安装在其网络中的各种机器上运行。服务端在运行时先行验证,若校验不成功,作为系统核心的该服务器程序无法运行,整个被加密系统也就相应地不能正常操作,达到软件保护的目的。若服务器程序经校验成功后正常运行,它将等待客户机发来各种请求消息,并控

18、制它们的运行状态。客户端的计算机运行被加密软件,运行时首先向浮动许可证服务器发送请求信息。服务器收到这些请求信息后,根据预先定义的规则(共享数限制、共享时间限制等等),决定是否批准该客户登录,并向客户端发出回答信息。如果批准客户端运行动作,则被加密系统可以正常运行;反之,被加密系统无法使用,并给用户显示相应的提示信息。许可证服务器的管理范围可以是局域网、城市网,甚至是遍布全球的Internet网络。未包括在本课题内的软件供应部门远程监控系统可以以数据库记录形式记录各个许可证的内容。有此模块存在时,服务端主机不存储“共享数”“共享时限”等等信息,而由远端数据库存储,如此可进一步提高安全性与健壮性

19、。验证客户端的系统时间,如果过期,则告诉对方,已过有效期.如果没过有效期,则验证服务端当前的共享数,如果超过共享数,则告知客户端客户端取得本机的系统时间,读写CA文件,用DES解密得到服务端IP,然后发送本机的系统时间给服务端发送验证请求先打开本地CA文件,如果没有该文件,则创建,然后得到本机IP,填写共享数和共享时间,进行DES加密,然后生成文件生成CA文件 服务端:响应请求程序逻辑图22主要技术点221流套接字应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同

20、的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。套接字是一个通信终结点,它是 Windows Sockets 应用程序用来在网络上发送或接收数据包的对象。套接字具有类型,与正在运行的进程相关联,并且可以有名称。目前,套接字一般只与使用网际协议组的同一“通信域”中的其他套接字交换数据。 VC+对网络编程的支持有socket支持,WinInet支持,MAPI和ISAPI支持等。其中,Windows Sockets API是TCP/IP网络环境里,也是Internet上进行开发最为通用的API。最早美国加州大学Berkeley分校在UNI

21、X下为TCP/IP协议开发了一个API,这个API就是著名的Berkeley Socket接口(套接字)。在桌面操作系统进入Windows时代后,仍然继承了Socket方法。在TCP/IP网络通信环境下,Socket数据传输是一种特殊的I/O,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用-socket()。可以这样理解:Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过网络和其他的Socket应用程序通信。Socket存在于一个通信域(为描述一般的线程如何通过Socket进行通信而引入的一种抽象概念)里,并且与另一个域的Socket交换数据。Socket有三

22、类。第一种是SOCK_STREAM(流式),提供面向连接的可靠的通信服务,比如telnet,http。第二种是SOCK_DGRAM(数据报),提供无连接不可靠的通信,比如UDP。第三种是SOCK_RAW(原始),主要用于协议的开发和测试,支持通信底层操作,比如对IP和ICMP的直接访问。本课题通过使用VC+语言实现Windows流套接字进行客户端与服务端间的TCP/IP通讯,以进行终端使用软件时的license验证。Windows Socket机制分析:主要的系统调用包括:socket()-创建Socket;bind()-将创建的Socket与本地端口绑定;connect()与accept()

23、-建立Socket连接;listen()-服务器监听是否有连接请求;send()-数据的可控缓冲发送;recv()-可控缓冲接收;closesocket()-关闭Socket。启动函数WSAStartup()建立与Windows Sockets DLL的连接,终止函数WSAClearup()终止使用该DLL。因为服务端无需操作,所以此设计中服务端采取阻塞等待机制,一直处于监听状态,等候客户端连入和发送请求,及时给予回应,之后再变更至等待模式。2223DES加密技术最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经

24、过政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。 DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。DES用软件进行解码需要用很长时间,而用硬件解码速度非常快。3DES DES的唯一密码学缺点,就是密钥长度相对比较短,所以人们并没有放弃使用DES,而是想出了一个解决其长度问题的方法,即采用三重DES。这种方法用两个密钥对明文进行三次加密,假设两个密钥是

25、K1和K2,其算法的步骤: 1. 用密钥K1进行DEA加密。 2. 用K2对步骤1的结果进行DES解密。 3. 用步骤2的结果使用密钥K1进行DES加密。 这种方法的缺点,是要花费原来三倍时间,但在现在大多数硬件允许的情况下,健壮性的加强值得时间上的投入。本课题使用三重DES加密CA文件内容与客户端服务端通讯,起到基本安全保密作用。223FSTREAM I /0 文件操作在C+中,对文件的操作是通过stream的子类fstream(file stream)来实现的,本课题中以此完成CA文件的生成、读取使用、修改等功能。一、打开文件 在fstream类中,有成员函数open()用来打开文件的。二

26、、关闭文件 打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作。三、文本文件的读写 文本文件的读写很简单:用插入器()从文件输入。四、文件定位 和C的文件操作方式不同的是,C+ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C+的文件定位分为读位置和写位置的定位,对应的成员函数是 seekg()和 seekp(),seekg()是设置读位置,seekp是设置写位置。通过文件对文件的生成、定位读取,服务端与客户端分别得到相关密文,解密后作

27、设置与验证依据使用。23 实例论文附带程序例子是上述方案中的服务端客户端验证部分,采用VC6平台,基于标准Win C+ 语言,通过TripleDES技术加密通讯,作为程序逻辑演示。(一)主要功能和流程:服务端:生成CA文件分配共享数管理客户端请求客户端:服务端所提供服务的演示首先,开启服务端,点击Make CA,弹出生成CA文件对话框,填入欲制作CA的共享数与共享时限,确认;同样,复制所生成文件之客户端目录下作为客户端软件密钥;而后,点击服务端Startup启动服务;最后,验证服务,启动客户端程序,点击验证,查看回显。(二)运行环境 1.客户端运行环境 Windows 95或更高版本以及MSV

28、C6运行库支持。2.服务器平台 Windows 95或更高版本以及MSVC6运行库支持。课题总结经过这段时间的工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏和以前对于C语言和WinSock编程未深入了解,故还存有诸多欠缺与遗憾。实施过程因改进实践过程中遇到困难,最终未实现非阻塞方式WinSock,致使服务端程序启动后处于占用监听状态,只提供服务而没有其他功能,但不影响演示功能。生成模块为了便于演示和共用端口之便利,实施过程中与服务端合并,作为其一功能存在。测试过程生成模块:获取IP测试 单元测试通过“缺少必填项时确认生成”的错误提示测试 错误提示对应无误CA文件解密测

29、试 单元测试通过服务端模块:非法CA文件测试及其错误提示 验证无效无验证功能,错误提示对应无误客户端模块:非法CA文件测试及其错误提示 验证无效无功能,错误提示对应无误超共享数测试 共享数以内个数客户端得到通过回显总结内容上,基本实现float license程序逻辑,只需改动部分代码即可套用于Windows应用程序的licensing系统中起软件保护层作用。因主要应用WinSock技术并基于MSVC,使程序移植性偏差,但作为演示实例可以满足快速开发的需求。对于此技术以及其扩展内容,在之后的工作中应深入了解。时间上,毕业设计过程中因工作实习原因,实际时间分配与开题报告中的时间预估计有一定延后,

30、时间分配不均匀,工作效率偏低,今后需要加以改进。致谢本研究及学位论文是在我的导师蔡建平教授的悉心指导下完成的。从课题的选择到项目的最终完成,郑老师都始终给予我细心的指导和不懈的支持。认识两年多来,蔡教授在学业上给我以精心指导与帮助,在此向蔡老师致以诚挚的感谢和崇高的致敬。并且,感谢大学期间所有任课老师,为我打下机械专业知识的基础;同时还要感谢所有的同学们的支持与鼓励。最后感谢北京工业大学四年来对我的大力栽培。敬礼!主要参考文献1 伍晓宇,C/C+语言与研究开发实践 航空工业出版社,19992 伍晓宇,浮动许可证加密系统的研制 计算机应用,1999 10月号3 郎瑞/孙方,Visual C+网络通信程序开发基础及实例解析 机械工业出版社,20064 Marshall Brain,Win32 System Services:The Heart of Windows 98 and Windows 2000(3rd Edition),20025 K&R,The C programming Language (2nd Edition),1992附录封底

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号