[优秀毕业论文]安全网络即时通信软件的设计与实现

上传人:仙*** 文档编号:27804946 上传时间:2021-08-20 格式:DOC 页数:45 大小:1.63MB
返回 下载 相关 举报
[优秀毕业论文]安全网络即时通信软件的设计与实现_第1页
第1页 / 共45页
[优秀毕业论文]安全网络即时通信软件的设计与实现_第2页
第2页 / 共45页
[优秀毕业论文]安全网络即时通信软件的设计与实现_第3页
第3页 / 共45页
点击查看更多>>
资源描述
本科毕业设计(2011届)题 目安全网络即时通信软件的设计与实现学 院专 业班 级学 号学生姓名指导教师完成日期2011年6月诚 信 承 诺我谨在此承诺:本人所写的毕业论文安全网络即时通信软件的设计与实现均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名): 年 月 日本科毕业设计摘 要随着计算机网络技术突飞猛进的发展,即时通信已成为目前互联网上最为流行的通信方式,深受广大网民的喜爱。无论是国内的腾讯QQ还是微软的MSN Messenger,都拥有相当大的用户群。即时通信软件给人们带来了极大的便利,使人们可以随时随地地和亲朋好友进行在线交流和沟通,它拉近了人与人之间的距离,丰富了人们的精神生活,正逐渐成为人们生活和工作中不可或缺的一部分。虽然即时通信软件层出不穷,但是大部分免费的即时通信软件都缺少数据加密功能,存在着不容忽视的网络安全隐患。本课题将利用现有的网络通信技术、数据库技术和信息安全技术,设计并实现一个新的安全网络即时通信系统。它在原有的即时通信系统的基础上,使用DES加密算法对通信内容进行加密和解密,保证了数据通信的及时性和安全性,为人们提供了更加安全可靠的即时通信平台。本系统采用三层C/S和P2P通信模型混合结构设计系统构架,在.NET开发环境下,使用C#语言进行开发,数据库采用了SQL Server 2000。该即时通信软件具备的主要功能包括用户帐号申请、用户登录、添加好友、文字聊天、文件传输等。本系统使用便捷,用户界面很有人性化,安全保密设置齐全,具有一定的使用价值。关键词:即时通信、信息安全、DES算法、便捷本科毕业设计ABSTRACTAlong with the fast development of the computer networking technology, instant communication has become the most popular communication means on the Internet, and it is favored by the majority of Internet users. Whether domestic tencent QQ or Microsofts MSN Messenger, has considerable user group. Instant communication software has brought people great convenience that people can communicate with relatives and friends online whenever and wherever possible. It cuts down the distance between people and people and enrich peoples spiritual life, and it is becoming an indispensable part of peoples life and work.Although instant communication software emerges endlessly, but most free instant communication software lacks data encryption functions, so that it exists the networking danger hidden which cant be ignored. This subject will use the existing network communication technology, database technology and information security technology to design and implement a new safety networking instant communication system. Basing itself on the old instant communication system, it uses DES encryption algorithm to encrypt and decrypt the communication content, to ensure timeliness and security of the data communication, so that it provides people with a more secure and reliable instant communication platform.The system uses the three-layer C/S and P2P communication model composite structure to design system architecture, and use C # language to development system in .NET framework development environment. The database uses SQL Server 2000. The instant communication softwares main funtions include users account application, users logining, adding friends, wordage chatting, file transferring, etc. The system uses conveniently, and has a hommization user interface, and security setting is complete, so that it has a certain value.Key words: Instant Communication; Information Security; DES Algorithm; Convenient 目录1引言11.1课题背景及选题意义11.2国内外研究与应用情况21.3研究目的22系统需求分析42.1需求分析42.2数据流图53系统总体设计73.1系统整体架构73.2服务器概要设计93.3客户端概要设计93.4开发环境及开发工具93.4.1开发环境概述93.4.2C#语言简介113.4.3SQL Server 2000简介114系统详细设计134.1数据库设计134.2通信消息加密处理原理144.3通信协议设计184.3.1传输层协议184.3.2应用层协议194.4系统主要模块的实现214.4.1注册登录模块的实现214.4.2添加好友模块的实现224.4.3加密通信模块的实现265系统测试与运行315.1测试方案315.2测试结果326总结38致谢39参考文献40 本科毕业设计1 引言1.1 课题背景及选题意义随着计算机网络的不断发展,全世界的人们被紧密地联系在了一起。方便快捷是互联网具有的一大优点,因此人与人之间的交流也更多地在互联网上进行。在这样的时代背景下,以简便、交互、快速为代表的即时通信软件应运而生。即时通信(Instant Messenger,简称IM)是一个终端连往一个即时通信网路的服务。很多即时通信服务具有presence awareness的特性显示好友的名单、好友是否在线与是否可以和好友进行通信等。以往网民通常会把即时通信看成是一个在网络上寻找朋友并可以与之进行交流的聊天工具。但是随着即时通信软件的功能和应用的不断丰富和完善,它使得用户可以在互联网上尽情地交谈,包括文字聊天和文件传输等,它已经逐渐演变成一个综合的桌面通信平台。即时通信软件以飞快的速度改变着人们的生活方式,无论从娱乐角度还是从商务角度来看,它在国内外已经成为了一种极具价值的通信工具,发挥着举足轻重的作用,将成为人们在网络生活中不可或缺的一部分。如今即时通信软件已成为信息传递最为广泛的应用工具之一,在因特网上比较受欢迎的即时通信服务有MSN Messenger、AOL Instant Messenger、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ与QQ等。即时通信之所以深受人们的青睐,就在于它人性化的设计让每个用户都可以得心应手地使用该软件,让用户在第一时间内得到信息的交流,在沟通中给用户带来了极大的满足。随着移动和互联网越来越深入地走进生活,人们渴望在任何时间、任何地点将尽可能多的通信工具融合在互联网同一个沟通环境下,实现各种通信工具的互补和整合。它让网上的好友可以身临其境地进行面对面的聊天,使彼此之间有更加深入的了解。人们不再局限于单一的网上或网下的沟通,而是希望通过跨平台、多终端的通信技术来实现一种集声音、文字、图像的低成本、高效率的通信服务。互联网的出现连通了整个世界,而即时通信软件的出现则进一步拉近了互联网上的每一位用户的距离。因此,即时通信软件深受人们的喜欢。目前大多数的即时通信软件在设计的时候都考虑了可扩展性,但却没有充分地考虑安全问题。几乎所有免费的在线即时通信软件都缺乏加密功能,其中大多数都具备绕过传统的企业防火墙的功能,为网络管理带来了很大的困难,这是一个很普遍的现象。为了保证通信内容的保密性,我们很有必要采用一定的数据加密算法对通信内容进行加密。1.2 国内外研究与应用情况ICQ是最早应用于互联网的即时通信软件,只经过短短几年的发展,它在行业内的地位已是无人可以撼动。最初的ICQ只有用户列表和即时聊天两个特性,但是一经推出就受到了广大网民的喜爱,6个月内其注册用户迅速攀升至85万,1998年它的用户数量更是翻了10数倍,达到了1200万人。ICQ的迅猛发展也令当时的互联网领头羊Yahoo和在桌面软件领域独树一帜的微软找到了商机,它们分别推出了Yahoo Messenger、MSN Messenger和昙花一现的MS Chat。MSN是微软公司提供的internet服务,始终致力于发掘用户的潜能,帮助他们与所关心的人及信息紧密相连无论是基于手机、PDA等移动智能终端,还是应用PC、家庭媒体中心及其它信息家电,用户都可以自在遨游于网络世界,畅享全天候、全方位的互动与沟通。它们改变了整个互联网的交流,使之变得更加及时和方便。它深受商务人士的喜欢。当ICQ风靡一时的时候,在国内也纷纷推出了各种仿ICQ的即时通信软件,有腾讯QQ、新浪UC、网易泡泡等。腾讯无疑是国内即时通信市场的霸主,自从99年进入即时通信领域并迅速占领市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的市场占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。从某种程度上说,腾讯QQ代表了国内即时通信最高的水平。由于我国有着网络应用最大的市场,现在国内网络的基础性建设发展迅速,应用软件也层出不穷,其中在游戏的领域中,网络通信服务就做得不错。随着即时通信应用的不断完善,其功能早已不仅仅是早期的即时文字聊天。图像表情已成为各种即时通信软件的标准功能,文件传输、网上交友、语音/视频聊天、游戏等高级功能也逐渐地被集成到即时通信的应用中。从中可以看出,眼下的即时通信已不再是一个简单的沟通工具,而是一个信息资讯、交流互动、休闲娱乐中心,它一直在努力地推出各种新应用。目前即时通信软件已越来越成熟,已成为现代人工作和生活中不可或缺的一部份,相信今后即时通信软件会越来越完善。1.3 研究目的目前各种即时通信软件基本随处可见,功能也日趋完善。但是很大一部分即时通信软件缺乏数据加密功能,这给即时通信带来了不可忽视的网络安全问题,保密的通信内容随时可能被他人窃取,引发不必要的麻烦。因此本课题研究的目的是设计实现一个界面美观的仿QQ的聊天工具,采用winsock实现点对点文字通信,并采用可靠的加密算法对通信内容进行加密。该即时通信软件应具有以下功能: 用户注册登录功能,个性化的界面给人以舒适的感觉,必要的操作提示方便用户使用; 添加好友功能,以消息窗口传达添加好友的请求以及回馈消息;加密通信功能,和好友进行文字聊天、文件传输等。由于DES加密算法处理速度比较快,且适合对大量数据进行加密处理,因此选用DES加密算法对通信内容进行加密和解密,以确保即时通信的安全性。2 系统需求分析需求分析是安全网络即时通信软件开发的第一步也是至关重要的一步,它描述了系统的需求,通过定义系统中的关键域类来建立模型。它的根本目的是在开发者和提出问题的人之间建立一种便于理解和沟通的机制。需求分析可以采用面向对象的方法来完成,即明确系统要服务于哪些用户,对这些用户提供哪些服务等,特别是数据流图是需求分析的出发点,数据流图可以划分出系统必须完成的基本功能。2.1 需求分析如今即时通信软件深受人们的喜爱,是人们生活中不可缺少的一部分。本课题设计的即时通信软件将模仿眼下国内最流行的聊天工具QQ,需要实现用户注册、用户登录、添加好友、文字聊天、文件传输等功能。该即时通信软件采用C/S结构,即客户端与服务器端的结构体系,分别对客户端与服务器端进行相应的设计。用户通过该即时通信软件的客户端来实现以下一些功能:注册功能用来提交用户的相关资料从而获得一个自己特有的用于登录系统的用户帐号;登录功能用来建立与服务器的连接,验证用户信息并登录,能显示登录出错信息;界面显示功能用来显示所有好友的在线状态和个人信息;添加好友功能用来处理用户之间的好友添加请求,并对添加好友请求做出相应的响应;加密通信功能用来实现在添加好友成功后,好友之间进行文字聊天、文件传输等加密通信。该即时通信软件的服务器端用来接收来自客户端的各种信息并分别对之做出相应处理。服务器通过信息接收功能来接收客户端发送的信息;注册处理功能是服务器接收到用户的注册请求信息后,自动为用户分配帐号,将用户信息写入数据库,同时将信息返回给客户端;登录处理功能是服务器通过验证登录信息是否正确来实现相关的处理;刷新功能是服务器每过一段时间刷新一次,来显示用户当前在服务器的相关信息,如在线状态等;好友添加处理功能实现服务器将用户的好友信息写入数据库中用户好友表的操作;用户退出处理功能是服务器在用户退出即时通信软件后,将此用户下线消息发给各客户端,并改写用户在服务器端的状态。该软件需要一个个性化的界面,方便用户使用。第一次使用该软件的用户通过填写个人资料来注册,服务器返回一个注册帐号给注册用户,用于以后登录。已经注册的用户输入帐号和密码后,验证登录信息是否正确,若正确则登录主界面。在线用户通过查看所要添加好友的个人信息,并且向好友发送添加好友请求信息,好友通过验证后,向请求方发送响应消息,请求方添加完成后,并把相关信息存入到数据库的好友表中。如果好友双方同时在线,就可以随时进行通信了。2.2 数据流图数据流图简称DFD图,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,它有源点或终点、处理、数据存储和数据流四种成分。数据流图只是描绘数据在系统中流动和被处理的逻辑过程,在数据流图中没有任何具体的物理部件,它直观地显示了系统中数据的使用情况,是极好的理解工具。它精确地描述系统的逻辑模型,描述数据在MIS中由输入经过存储、加工处理最后输出的全过程,是设计者和用户之间进行交流的很好的工具。表2-1数据流图的符号说明图 形 符 号名 称符 号 说 明实体描述系统之外的数据提供或数据获得组织机构或个人,框内为实体名称PMC 处理描述某种业务的手工或计算机处理,其中PM表示处理标号,C表示处理名称DN S数据存储描述与处理有关的数据存储,其中DN表示存储的标号,S表示存储数据的名称FM数据流描述数据流流动方向,其中FM表示数据流的名称本系统采用自顶向下,逐层细化的方法,绘制的数据流图如下:用户根据需要使用即时通信系统,即时通信系统根据用户的请求,给出相应的反馈信息。图2-1 顶层数据流图用户操作客户端,客户端把用户的请求提交给服务器,服务器对客户端的请求信息做出相应处理并对数据库进行相应操作,然后向客户端反馈信息,客户端再向用户反馈操作结果。图2-2 第一层数据流图用户申请帐号时,用户注册系统向服务器提交用户的个人信息,服务器接收到用户注册系统提交的信息后,在用户表中记录新用户的基本信息,与此同时,用户注册系统向用户返回一个帐号。用户登录时,用户登录系统把用户的登录信息提交给服务器,服务器在用户表中查找是否存在与用户输入的帐号和密码都一致的用户信息,并给用户登录系统反馈信息,若一致则登录成功进入客户端主窗体,向用户呈现他们想要了解的信息。用户添加好友时,添加好友系统向服务器提交好友的ID,服务器在用户表中查找是否存在与该ID对应的用户,若存在则向添加好友系统反馈好友的信息。用户操作加密通信系统,可以和好友进行文字聊天和文件传输。图2-3 第二层数据流图3 系统总体设计总体设计首先要寻找并设计实现目标系统的各种不同的方案,而设想各种可能方案的基础则是需求分析阶段得到的数据流图。从这些供选择的方案中选取若干个相对合理的方案,并为每个合理的方案准备一份系统流程图,列出组成系统的所有物理元素。软件结构设计应该遵循的主要原理是模块独立性原理,即软件应该由一组完全相对独立的子功能的模块组成。总体设计中模块的划分应该符合高内聚、低耦合的原则。3.1 系统整体架构该即时通信系统采用C/S模式设计,主要包括客户端、服务器和数据库服务器三层,客户端提供用户注册账号、用户登录、用户添加好友及对方响应、好友之间通信等服务,服务器用来对注册登录的用户进行管理以及对客户端发送的请求信息做出相应处理,数据库服务器存放用户相关的用户表和好友表。它们之间的关系如图3-1所示:客户端服务器数据库服务器图3-1 三层模型服务器与客户端之间采用TCP协议进行可靠通信,使服务器可以随时掌控客户端的在线状态和运行情况。两个要求通信的客户端之间采用UDP协议直接进行通信。其总体结构如图3-2所示:服务器客户端用户用户客户端TCP连接TCP连接UDP通信图3-2 系统总体结构该即时通信系统包含了用户注册模块、用户登录模块、添加好友模块、加密通信模块、服务器模块、数据库模块等,其系统流程图如图3-3所示:图3-3 系统流程图该系统有一个简单美观的界面,使用户很明了该如何使用它。使用该即时通信软件的用户首先得进行帐号申请,在登录窗体上用户单击注册按钮,激活注册窗体,然后填写用户个人相关的注册信息,提交给服务器。服务器将注册信息提交给数据库,并由服务器按注册顺序生成一个用户ID号并告知注册用户,这样就完成了帐号申请。以后用户就可以用注册成功的帐号进行登录。用户在登录窗口输入用户帐号和用户密码,由客户端将登录信息提交给服务器,服务器根据数据库中存储的用户信息与客户端提交的登录信息进行比较,比较一致后,则返回一个登录成功的确认信息给客户端,当客户端收到这个确认信息时,则激活该聊天软件的客户端主窗体。倘若你想与好友进行聊天,则必须先添加好友,假如用户1想添加用户2为好友,那么用户1首先得向用户2发送添加好友请求,用户2在接收到用户1的请求信息后,通过验证发送确认反馈信息给用户1,与此同时向服务器提交好友添加确认信息,服务器接收消息后就会更新相应用户的好友列表中的相关信息。在好友添加完成后,用户之间就可以进行加密通信,如文字聊天、文件传输等。3.2 服务器概要设计服务器需要完成建立连接、监听客户和操作数据库这3个功能。服务器首先得建立一个Socket连接,通过TcpListener不断侦听是否有客户端连接或者断开连接。服务器是一个信息发送中心,所有客户端的请求信息都发送到服务器,再由服务器根据要求做出相应处理并发送反馈信息。后台采用SQL Server 2000数据库进行数据存取,数据库的数据操作包括录入用户信息、查找好友资料以及添加好友数据到数据库等。3.3 客户端概要设计客户端需要完成帐号申请、用户登陆、添加好友以及加密通信这4个功能。当用户申请帐号时,客户端与服务器建立连接,并向服务器发送新用户的申请信息,接收来自服务器的反馈信息进行注册。用户登录时先输入帐号和密码,客户端与服务器建立连接,向服务器发送用户的登录信息,服务器在数据库中查找是否有该用户信息,若信息一致,则登陆成功。添加好友是客户端必须实现的功能,这是用户之间进行聊天的基础。用户通过客户端可以查看好友的信息,添加好友后会给对方发送消息窗口,等待对方验证。两个客户端之间通过UDP协议进行直接通信,因而好友之间可以进行文字聊天和文件传输等。3.4 开发环境及开发工具3.4.1 开发环境概述微软发布了.NET开发平台,这是自1993年7月随着Windows NT3.0出现的Win32 API后微软软件开发平台的第一次大升级。比起Win16来,Win32提供了更多功能强大的API,但没有对工具和技术进行引人注目的改变。与之不同的是,.NET开发平台在开发者用以创造应用程序的工具和技术上做了根本的改变。.NET开发平台使得开发者创建运行在Internet Information Server (IIS)(互联网信息服务器)Web服务器上的Web应用程序更为容易,它也使创建稳定、可靠而又安全的Windows桌面应用程序更为容易。.NET开发平台包括以下内容:(1) .NET Framework(架构),包括:Common Language Runtime(CLR)(通用语言运行环境),这是用于运行和加载应用程序的软件组件;新的类库,分级组织了开发者可以在他们的应用程序中用来显示图形用户界面、访问数据库和文件以及在Web上通信的代码集。(2) .NET开发者工具,包括:Visual Studio .NET Integrated Development Environment (IDE)(Visual Studio .NET集成开发环境),用来开发和测试应用程序。(3) .NET编程语言(例如Visual Basic .NET和新的Visual C#),用来创建运行在CLR下并且使用类库的应用程序。(4) ASP .NET,一个取代以前的Active Server Pages (ASP)的特殊类库,用来创建动态的Web内容和Web服务器应用程序,这些都将采用诸如HTML、XML和Simple Object Access Protocol(SOAP)(简单对象访问协议)等Internet协议和数据格式。.NET开发平台是一组用于建立Web服务器应用程序和Windows桌面应用程序的软件组件,用该平台创建的应用程序在Common Language Runtime(CLR)(通用语言运行环境)(底层)的控制下运行。CLR是一个软件引擎,用来加载应用程序,确认它们可以没有错误地执行,进行相应的安全许可验证,执行应用程序,然后在运行完成后将它们清除。类库集提供了使应用程序可以读写XML数据、在Internet上通信、访问数据库等的代码。所有的类库都建立在一个基础的类库之上,它提供管理使用最为频繁的数据类型(例如数值或文本字符串)的功能,以及诸如文件输入/输出等底层功能。Web服务器应用程序通常依赖于ASP.NET,一个处理Web请求的服务器端的库。ASP.NET又依赖一个用于发送和接收SOAP信息的Web Services库,以及一个用于以浏览器接收用户输入并动态地生成Web页面以示响应的Web用户接口(UI)(有时称作Web 表单)。Windows桌面应用程序通过使用Win表单库(也称作Windows 表单)可以显示一个图形UI。最后,Visual Studio .NET提供了一个用于在该平台上创建应用程序的图形Integrated Development Environment(IDE)(集成开发环境)。程序员可以使用一种或多种.NET编程语言,来编写他们的代码,例如微软的Visual Basic .NET(VB.NET),Visual C+,Visual C#和JScrjpt .NET等。大量其它的.NET编程语言可以从第三方厂商获得。3.4.2 C#语言简介C#是一种面向对象的语言,它功能强,易于表现,使用灵活。通过C#可以让开发人员快速地建立大范围的基于微软新的.NET的平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。由于其优良的面向对象设计,在构建从高级业务对象到系统应用的各种不同组件时,C#是一个首要的选择。使用简易的C#语言构造,组件可以被转换为WEB服务,从而允许从运行在任何操作系统上的任何语言中跨越Internet调用它们。不仅仅如此,C#的设计为C+程序员带来了快速的开发能力,而不用牺牲C+已有的功能和控制能力。C#高度保持了与C和C+的一致性。从继承角度来看,C#在更高层次上重新实现了C/C+,熟悉C/C+的开发的人员可以很快的转变为C#开发人员。C#具有以下一些重要特性:(1) 开发效率与安全性;(2) 与Web开发相结合;(3) 减少了开发中的错误;(4) 提供内置的版本支持来减少开发费用;(5) 更好的结合商业应用中的流程与软件实现;(6) 可扩展的协作能力。3.4.3 SQL Server 2000简介SQL是Structured Query Language(结构化查询语言)的缩写,是用户操作关系数据库的通用语言。SQL虽然叫结构化查询语言,其查询操作确实是数据库中的主要操作,但并不是说SQL语言只支持查询操作,它实际上包含数据定义、数据操纵和数据控制等与数据库有关的全部功能。Microsoft SQL Server 2000是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。众所周知,SQL Server 2000能够满足今天的商业环境要求不同类型的数据库解决方案。它是一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。除这些核心企业品质外,SQL Server 2000还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQL Server 2000为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQL Server 2000是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在Internet上和防火墙外进行查询的能力。4 系统详细设计4.1 数据库设计数据库是安全网络即时通信系统的后台,存放着所有用户的信息,在安全网络即时通信系统中有着极其重要的作用。数据库设计的好坏直接影响到整个系统的运行效率。一个良好的数据库设计,可以提高数据信息的存储效率,保证数据信息的一致性和完整性。而且一个设计合理的数据库结构有助于程序的实现。本系统选用SQL Server 2000作为后台数据库。本系统需要两张数据库表分别用来存放用户的注册信息以及用户的好友资料。在SQL Server 2000上新建一个名为test的数据库,并在test中建立两张数据库表:用户的基本信息表(表名userio)和用户的好友表(表名u_id)。表4.1用户基本信息表字段名称数据类型长度主键说明允许空UserIDint4yes用户帐号否UserNamevarchar50用户昵称否Pwdvarchar50密码是UserImagevarchar50用户头像编号否OnlineStatint4在线状态是IPAdressvarchar50IP地址是Portint4端口号是表4.2 用户好友表字段名称数据类型长度主键说明允许空FriendIndexint4yes好友帐号是OnlineStatint4在线状态是采用数据库的目的是保存用户的基本信息及好友信息,为用户之间的通信提供相关的数据服务,例如用户登录时,在登录窗口中输入用户帐号和密码后,就需要和数据库中已有的用户信息进行比较,如果一致则登录成功,如果不一致则需要重新登录。基本的设计思路为首先建立一个用户基本信息表,这张表包括所有用户的详细信息,包括用户帐号、用户昵称、密码、用户头像编号、在线状态等,当新用户注册时,将用户的基本信息记录该表内;在用户注册成功后,服务器就会自动生成一个该用户的好友表,该表中存放着该用户添加的好友信息,在用户登录成功后,客户端主界面上的好友信息就来自用户的好友表,从而两个在线的好友之间就可以进行通信了。数据库表的关系实际上体现为用户表与用户表之间的关系。图4-1为该即时通信系统的数据库的E-R图,它体现了用户1表(用户1帐号,用户1昵称,用户1在线状态,用户1头像编号等),其中用户1帐号为主键;用户2表(用户2帐号,用户2昵称,用户2在线状态,用户2头像编号等),其中用户2帐号为主键。这两个用户表之间的关系是1:1关系,即用户1的好友表只能添加一个用户2为好友,用户2的好友表中只存在一个用户1的帐号。用户1可以添加N个用户为好友,但这些好友的帐号在用户1的好友表中是唯一的。用户1用户2添加好友用户1头像编号11用户2在线状态用户1帐号用户1昵称用户1在线状态用户2帐号用户2昵称用户2头像编号图4-1 实体关系E-R图4.2 通信消息加密处理原理数据加密技术是指对在网络中所发送的明文消息用加密密钥加密成密文进行传送,接收方用解密密钥进行解密再现明文消息,从而保证传输过程中密文信息即使被泄漏,在无密钥的情况下仍是安全保密的。数据加密模型如图4-2所示,它由明文M、密文C、密钥K、加密算法E和解密算法D五个部分组成。加密过程为在发送端利用加密算法E和加密密钥Ke对明文M进行加密,得到密文C = Ek(M)。密文C被传送到接受端后进行解密。解密过程为接受端利用解密算法D和解密密钥Kd对密文进行解密。将密文恢复为明文M = Dk(C)。发送方加密算法E解密算法D接收方C=Ek(m)公共通道秘密通道M=Dk(c)MKeKd图4-2 数据加密模型DES算法是一种采用传统加密方法的区组密码。DES算法的入口参数有三个:Key、Data、Mode。其中Key 为8个字节共64位,是DES算法的工作密钥;Data为8个字节共64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。DES的加密过程可分为加密处理、加密变换及子密钥的生成三个部分。l 加密处理初始换位:加密处理首先要对64比特明文按初始换位表IP进行换位。表中的数字表示输人的比特被置换后的新比特位置。加密处理:上述换位处理的输出中, 中间要经过16层复杂的加密变换。经过初始换位的64比特的输出变为下一步的输人, 此64比特分成左、右两个32比特, 左为L0,右为R0。若经过第n层处理后的左、右32比特分别为Ln和Rn,则:Ln=Rn-1,Rn=Lnf(Rn-1,Kn),Kn是向第n层输入的48比特的密钥;f是以Rn-1和Kn为变量的输出32比特的函数。最后换位:进行完16次的加密变换之后,将L16和R16合成64位数据,再按最后换位表IP-1进行换位,得到64比特的密文。l 加密变换在DES算法中,其他部分是线性的,而这个f(Rn-1,Kn)变换是非线性的,因此可以产生强度很高的密码。32比特的R首先按扩展型换位表进行换位,同时把一部分比特重复使用, 便可以扩大成48比特。这样得到的48比特的R,按照从头算起,每4比特再加上后面的2比特,便形成每6比特一组的8个分组。这48比特的R和48比特的密钥K进行异或运算,并分成每组6比特的8个分组, 输人到S1S8的8个S盒中去, S1S8称为选择函数。这些S盒输人是6比特, 输出是4比特。究竟采取哪一个代替表,要通过输人的6比特的开头和末尾的两个比特选定, 然后按选定的代替表将输人的6比特的中间4比特进行代替。这样从8个S盒输出的32比特, 根据单纯换位表进行换位, 这样便实现了f(Rn-1,Kn)的变换。l 子密钥的生成 在64比特的密钥里包含了8位的奇偶校验位,所以实际密钥长度是56比特,而每层要生成48比特的子密钥。输人的64比特的密钥,首先通过压缩型换位PC1去掉奇偶校验位, 再将不含奇偶校验位的56比特进行输出,而每层要分成两部分,上部分的28比特为C0, 下部分的28比特为D0。C0和D0依次进行循环左移位,生成C1和D1,然后将C1和D1合成56位,再通过压缩型换位PC2,输出的结果即为48位子密钥K1。再将C1和D1进行循环左移位和PC2的转换, 即得到子密钥K2。以此类推,得到16级的子密钥。在产生16级子密钥的过程中,L1,L2,L9,L16是循环左移1位的变换,而其余的Lsi都是循环左移2位的变换。DES算法具体实现如下:把基于DES算法的核心加密解密程序封装成一个类文件,供外部函数调用。1.根据指定的密钥生成DES构造函数public Des(string key)mydes = new DESCryptoServiceProvider();Key = key;IV=728#$%TyguyshdsufhsfwofnhKJHJKHIYhfiusf98*(%$&(*&()$#%$RHGJJHHJ;2.生成用于DES算法的随机8位字符串密钥private byte GetLegalKey() string sTemp = Key;mydes.GenerateKey();byte bytTemp = mydes.Key;int KeyLength = bytTemp.Length;if (sTemp.Length KeyLength)sTemp = sTemp.Substring(0, KeyLength);else if (sTemp.Length KeyLength) sTemp = sTemp.PadRight(KeyLength, );return ASCIIEncoding.ASCII.GetBytes(sTemp);3.获取当前密钥和初始向量,随后创建DES加密器对象,将输入的8位明文加密成8位密文并转换为等效的字符串返回public string Encrypt(string Source) byte bytIn = UTF8Encoding.UTF8.GetBytes(Source); MemoryStream ms = new MemoryStream(); mydes.Key = GetLegalKey();mydes.IV = GetLegalIV();ICryptoTransform encrypto = mydes.CreateEncryptor(); /用当前密钥和初始向量创建DES加密器对象CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);cs.Write(bytIn, 0, bytIn.Length); /将一个字节序列写入当前CryptoStream,并将流中的当前位置提升写入的字节数cs.FlushFinalBlock(); /用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区ms.Close();byte bytOut = ms.ToArray();return Convert.ToBase64String(bytOut);4.把等效字符串转换为8位密文,获取当前密钥和初始向量,随后创建DES解密器对象,将8位密文解密成8位明文并返回public string Decrypt(string Source)byte bytIn = Convert.FromBase64String(Source);MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);mydes.Key = GetLegalKey();mydes.IV = GetLegalIV();ICryptoTransform encrypto = mydes.CreateDecryptor(); /用当前密钥和初始向量创建DES解密器对象CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);StreamReader sr = new StreamReader(cs);return sr.ReadToEnd();4.3 通信协议设计4.3.1 传输层协议TCP是面向连接的传输层协议,提供双向同时通信和可靠的数据传输。客户端和服务器之间使用的就是TCP协议。TCP每一条连接上的通信是一对一的,它提供错误控制,对乱序到达的报文进行重新排序。TCP报文段包括协议首部和数据两部分,协议首部的固定部分有20个字节。TCP首部格式如图4-3所示。源端口(2字节)目的端口(2字节)序号(4字节)确认号(4字节)数据偏移保留UURGAACKPPSHRRSTSSYNFFIN窗口(2字节)校验和(2字节)紧急指针(2字节)选项(长度可变)填充图4-3 TCP首部格式TCP会话通过“三次握手”完成初始化,它使序号同步,并提供在两个主机之间建立虚拟连接所需的控制信息。“三次握手”的过程如图4-4所示。客户端A主动打开服务器B被动打开连接请求B发送确认A发送确认SYN=1,SEQ=x,ACK=0SYN=1,ACK=1,SEQ=y,ACK=x+1ACK=1,SEQ=x+1,ACK=y+1图4-4 TCP的“三次握手”TCP需要先互相确认后才可以断开连接,否则就是非法断开连接。它通过“四次挥手”断开连接,过程如图4-5所示。客户端A服务器BA应用进程释放连接通知主机进程并加以确认A发送确认FIN=1,SEQ=xACK=1,SEQ=y,ACK=x+1ACK=1,SEQ=x+1,ACK=y+1B应用进程释放连接FIN=1,ACK=1,SEQ=y,ACK=x+1关闭状态图4-5 TCP的“四次挥手”UDP是无连接的传输层协议,UDP报文不需要确认,由于附加的控制信息少,传输效率比较高。两个用户之间聊天使用的是UDP协议,UDP协议用来在互联网中提供包交换,它提供了向另一个用户程序发送信息的最简便的协议机制。在发送数据报文段之前不需要建立连接,它不支持拥塞控制,网络出现拥塞时就简单地丢掉数据单元,支持一对多、一对一、多对多和多对一的交互通信。UDP的首部很简单,只有8个字节,由源端口号、目的端口号、长度及校验和4个字段组成,每个字段都是2个字节。4.3.2 应用层协议用户注册时,客户端向服务器提交的消息格式为:控制符REG昵称密码头像ID服务器查看控制符,若为REG则调用注册函数,生成一个新的用户ID,随同昵称、密码、头像ID一起插入用户信息表中。用户登录时,客户端向服务器提交的消息格式为:控制符LOG用户ID密码服务器查看控制符,若为LOG则调用登录函数,在用户信息表中查找是否有与输入的帐号和密码一致的用户记录,若有则向客户端返回判别符ACC,表示登录成功,若无则向客户端返回判别符UAC,表示登录失败。用户查看好友资料时,客户端向服务器提交的消息格式为:控制符RFI好友ID服务器查看控制符,若为RFI则调用请求好友资料函数,在用户信息表中查找是否存在该用户ID,若无则向客户端返回判别符false,表示不存在该用户,若有则向客户端返回响应消息,格式为:判别符true好友ID好友昵称好友头像ID好友IP在线状态用户1向用户2发送添加好友请求时,用户1所在客户端向用户2所在客户端发送消息的格式为:控制符REQ用户ID用户IP用户2点击同意按钮时,用户2所在客户端向服务器提交的消息格式为:控制符ADD用户ID好友ID服务器查看控制符,若为ADD则调用添加好友函数,在用户1和用户2的好友表中分别插入用户2和用户1 的ID。与此同时用户2所在客户端向用户1所在客户端发送的消息格式为:控制符AFF判别符Finish用户2点击拒绝按钮时,用户2所在客户端向用户1所在客户端发送的消息格式为:控制符AFF判别符Refuse用户1所在客户端查看控制符,若为AFF则调用添加好友反馈函数,查看判别符,若为Finish则添加好友成功,若为Refuse则添加好友失败。用户1给用户2发送文字信息时,用户1所在客户端向用户2所在客户端发送的消息格式为:控制符MSG用户ID文字信息用户2所在客户端查看控制符,若为MSG则调用用户选择函数,找到用户1并把文学消息显示在用户1的聊天窗口中。用户1给用户2传输文件时,用户1所在客户端向用户2所在客户端发送的消息格式为:控制符RFS用户ID文件大小文件名称用户2所在客户端查看控制符,若为RFS则调用请求传输文件函数,用户2点击接收按钮时,用户2所在客户端向用户1所在客户端发送的消息格式为:控制符RSQ判别符ACC用户2点击拒绝按钮时,用户2所在客户端向用户1所在客户端发送的消息格式为:控制符RSQ判别符REJ用户1所在客户端查看控制符,若为RSQ则调用文件传输反馈函数,查看判别符,若为ACC则开始传输文件,若为REJ则表示对方拒绝接收文件。4.4 系统主要模块的实现4.4.1 注册登录模块的实现注册登录功能是很多应用软件都应具备的基本功能。首先启动客户端,会出现一个登录对话框,如果用户第一次使用该软件,需要先申请一个帐号,点击帐号申请按钮,就会触发btnRegister_Click(object sender, EventArgs e) 事件处理函数,显示用户注册窗体,填写完用户的个人信息后,点击确定按钮,就会触发btnOK_Click(object sender, EventArgs e) 事件处理函数,首先判断两次输入的密码是否一致,若不一致给出错误提示,填写信息无误后向服务器发送字符串REG + nickname + + pwd +faceid,提交用户的个人信息。服务器在接收到客户端的申请帐号请求信息后,使用语句INSERT userio(userid,username,pwd,userimage,onlineStat,ipaddress,port)VALUES(+tempid+,+username+,+ pwd+,+userimage+, 0,+remoteip.ToString()+,+port+ )向数据库的用户信息表中插入一条新的记录,并使用语句CREATE TABLE u_ + tempid + (friendIndex int NULL ,onlineStat int NULL )给用户创建一个好友表,最后向客户端返回一个用户帐号。其关键代码如下:private void btnOK_Click(object sender, EventArgs e)if(pwd != repwd) MessageBox.Show(两次密码输入不一致,请重新输入密码!); pass = false; elsetry int id = Convert.ToInt32(faceid); pass = true; catch MessageBox.Show(请确认你的头像ID输入正确,头像ID只能为数字!); pass = false; if(pass = true) tcpc.Connect(serverip , port); NetworkStream nsc = tcpc.GetStream(); string brestr = REG + nickname + + pwd +faceid; write = Encoding.Unicode.GetBytes(brestr.ToCharArray(); nsc.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!