网络安全课程设计报告_第1页
网络安全课程设计报告_第2页
网络安全课程设计报告_第3页
网络安全课程设计报告_第4页
网络安全课程设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中原工学院计算机学院网络安全程序课程设计报告题目:基于des加密的聊天程序班级:网络124 班4目录第1 章 绪论31.1 des加密背景 31.2 聊天程序设计背景 4第2 章 加密原理 52.1 des简介 52.2 des加密原理 52.3 des加密过程 7第3 章 聊天程序设计 83.1 TCP/IP协议 83.2 客户机/服务器模式 83.3 Socket 9第4 章 系统设计 114.1 开发语言及环境 114.2 需求分析 114.2.1 功能需求分析 1_14.2.2 数据需求分析 1_14.2.3 性能需求分析 1_24.2.4 运行需求分析 1_24.3 程序流程图 13

2、4.4 模块设计 144.4.1 服务器 1_44.4.2 客户端 1_5第5 章 程序测试 175.1 运行结果 1_7第6 章 总结 21参考文献21第 1 章 绪论1.1 des 加密背景随着计算机和网络在军事、政治、金融、工业、商业等部门的广泛应用,社会对计算机和网络的依赖越来越大,科学技术的研究和发展及其在商业领域的应用等方面,无一不与信息息息相关。所以信息就是生命,信息就是时间,信息就是财富。由于信息是共享的,信息的扩散会产生社会影响,所以保护信息的安全是信息时代的迫切需要。如果计算机和网络系统的信息安全受到破坏将导致社会的混乱并造成巨大损失。因此,确保计算机和网络系统的信息安全已

3、成为世人关注的社会问题和计算机科学与技术领域的研究热点。当前,以Internet 为代表的计算机网络的迅速发展和广泛应用,正引起社会和经济的深刻变革,极大地改变着人们的生活和工作方式。Internet已经 成为我们生活和工作中一个不可缺少的组成部分。对此,发展我国的电子政务、电子商务和电子金融已成为建设具有中国特色社会主义强国的不可回避的选择。然而,目前影响电子政务、电子商务、电子金融应用的主要技术障碍是信息安全问题。由于Internet原来缺少安全设计,再加上Internet的开放 性和无政府状态,使Internet成为一个不安全的网络。这就使得Internet不能 适应电子政务、电子商务和

4、电子金融等系统对信息安全的要求。确保信息的安全就必须加强加密技术,加密技术是基于密码学原理来实现计算机、网络乃至一切信息系统安全的理论与技术基础。1977年美国颁布了数据加密标准 DES(Data Encryption Stantard)这是密码史上的一个创举。DES 算法最初由美国IBM 公司设计,经美国国家安全局评测后,颁布为标准。DES 开创了向世人公开加密算法的先例。自从公布以来,它一直超越国界,成为国际上商用保密通信和计算机通信的最常用的加密算法。 DES 也是曾被广泛使用的分组密码,遍及世界的政府,银行和标准化组织把DES 作为安全和论证通信的基础。DES 算法公开是密码学史上里程

5、碑式的事件1.2 聊天程序设计背景随着互联网技术的发展,互联网应用越来越丰富。互联网以其独特的传播方式吸引了大量用户,同时也给人们带来了许多便利,譬如可以借助于网络进行相互交流、信息传递等。聊天工具作为互联网中运用最为广泛的通信工具之一,它可以让用户之间进行即时的交流和信息的传递。聊天工具的出现可以说是基于互联网通信交流方式的历史性变革,它已经渐渐取代了原来效率低、费用高的如信件、电报的通信方式,以其快速、交互、简便的方式给用户的交流提供了简单、易用的信息平台,成为现今应用最为广泛的即时通信工具之一。随着相关技术的日益发展,用户对功能的需求不断提高。为了更好地服务于用户,聊天工具的功能也在不断

6、地完善。在未来的网络时代中,聊天工具将以即时通信为其基本特点,并与各种网络应用整合,同时随着无线网络的广泛应用,它将成为未来不可缺少的一种通信软件。本课程设计的目的主要是为了满足人们通讯交流的便捷,实现灵活、全面的语音、视频信息的传递和服务。模拟腾讯公司的QQ 聊天软件,开发一个多功能的聊天系统软件,该课程设计主要实现文字聊天功能。第2章加密原理2.1 des简介DES的设计目标是,用于加密保护静态存储和传输信道中的数据,安 全使用1015年。DES综合运用了置换、代替、代数等多种密码技术。它设计精巧、安全、 方便,是近代密码的世界标准,为确保数据安全作出了重大贡献。DES的设计充分体现了 S

7、hannon信息保密理论所阐述的设计密码的思想,标志着密码 的设计与分析达到了新的水平。DES是一种分组密码。明文、密文和密钥的分组长度都是64位。DES是面向二进制的密码算法,因而能够加解密任何形式的计算机数据。DES是对合运算,因而加密和解密共用同一算法,从而使工程实现的工 作量减半。2.2 des加密原理DES全称为Data Encryption Standard即数据加密算法,它是 旧M公司 研究成功并公开发表的。DESB法的入口参数有三个:Key、Data、Mode其中Key为8个字节共 64位,是DEST法的工彳密钥;Data也为8个字节64位,是要被加密或被 解密的数据;Mode

8、为DES勺工作方式,有两种:加密或解密。数据加密标准(DES的算法是用于计算机数据加密保护的分组加密的数 学算法,算法以64 bit为一个分组对数据进行加密。使用 64 bit的密钥加 密64 bit分组的信息。首先将原始数据 64 bit明文进行初始置换IP,然后 与子密钥(由加密密钥产生)进行一系列迭代运算,最后再经过逆置换IP,即可得到64 bit密文(加密后数据)。在每一轮中,数列块的右边 32 bit数 据和密钥(Key) 一起传送给函数f,函数f运算的结果再与数列块左边32 bit 数据进行“异或”操作。其中 S盒(S选择函数)是DES算法的心脏,由它实 现非线性变换。解密过程与此

9、类似,只是在应用子密钥时,顺序颠倒为DE就法实现时用到许多的数学知识,子密钥的产生,初始值换IP,加密函数以及逆初始值换IP。DES的整体结构如图2-1所示:L =RRi =L二 f(R,Ki)i=1,2,3, , 16逆初试置换ip-i(54位电文数据输出图2-1 DES的整体结构62.3 des加密过程1) 64位密钥经子密钥产生算法产生出16个子密钥:Ki,K2”K16, 分别供第一次,第二次,第十六次加密迭代使用。(2) 64位明文首先经过初始置换IP (Initial Permutation),将数据打乱 重新排列并分成左右两半。左边 32位构成L0 ,右边32位构成R0o(3)由加

10、密函数f实现子密钥Ki对Ro的加密,结果为32位的数据组f(R0,Ki)。f(Ro,Ki)再与Lo模2相加,又得到一个32位的数据组Lo© f(Ro,Ki)0以Loa f(R,Ki)作为第二次加密迭代的 R,以Ro作为第二 次加密迭代的Li。至此,第一次加密迭代结束。(4)第二次加密迭代至第十六次加密迭代的分别用子密钥K2,K3,,Ki6进行,其过程与第一次加密迭代相同。(5)第十六次加密迭代结束后,产生一个 64位的数据组。以其左边32 位作为Ri6 ,以其右边32位作为Li6,两者合并再经过逆初始置换IP、将数 据重新排列,便得到64位密文。至此加密过程全部结束。综上可将DES的

11、加密过程用如下的数学公式描述:Li = RRi =L_ 二 f(R,Ki)i =i,2,3,. i6第 3 章 聊天程序设计3.1 TCP/IP 协议TCP/IP协议的核心部分是传输层协议(TCP、UDP)网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS用的就是TCM、议;UDP无连接的,通信双方都不保持对方的状 态,浏览器访问Internet时使用的HTTPB议就是基于UDFW议的。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、 使用以库函数方式提供

12、的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所以要使用套接字(socket) 来设计。3.2 客户机 /服务器模式C/S 结构 ( Client/Server 结构) 是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和 Server 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的 Web应用发展,We侨口 Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;

13、因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。首先服务器方要启动,并根据请求提供相应服务:( 1) 打开一通信通道并告知本地主机,它在某一公认地址端口上( 如 http为 80)接受客户请求。( 2)等待客户请求到达该端口。( 3)接收到重复服务请求,处理该请求并发送应答信号。接收并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其他请求做出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。( 4)返回第二步,等待另外的客户请求( 5)关闭服务器。客户方:( 1)打开一

14、通信通道,并连接到服务器所在主机的特定端口。( 2)向服务器发出服务请求报文,等待并接收应答;继续提出请求。( 3)请求结束后关闭通信通道并终止。从上面的描述过程可知:( 1)客户与服务器进程的作用是非对称的。因此编码不同。( 2)服务进程一般是先于客户请求启动的。只要系统运行,该进程一直存在, 直到正常终止或者强迫终止。在 TCP/IP 网络中两个进程间的相互作用的主机模式是客户机/ 服务器模式(Client/Server model) 。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。3.3 Socketsocket 之间的连接可以分为三种类型:客户端连接,监听连接以及服器

15、端连接。客户端连接是指由客户端的socket 提出连接请求,要连接的目标是服务器端的 socket 。为此,客户端的socket 必须首先描述它要连接的服务器端socket( 主要是指服务器端 socket 的地址和端口号) ,然后再定位所要连接的服务器端socket ,找到以后,就向服务器端socket 请求连接。当然,服务器端的socket 此时未必正好处于准备好状态,不过,服务器端的socket会自动维护客户请求连接的队列,然后在它认为合适的时候向客户端socket发出 " 允许连接" (accept) 的信号,这时客户端socket 与服务器端socket的连接就建

16、立了。监听连接,服务器端socket 并不定位具体的客户端socket ,而是处于等待连接的状态。当服务器端socket 监听到或者说接收到客户端socket的连接请求,它就响应客户端socket 的请求建立一个新的socket 句柄并与客户 端连接,而服务器端socket 继续处于监听状态,还可以接收其它客户端 socket 的连接请求。服务器端连接,是指当服务器端 socket接收到客户端socket的连接请求 后,就把服务器端socket的描述发给客户端,一旦客户端确认了此描述,连 接就建立了。在本文中的聊天程序用的就是监听连接,即服务器设置连接个数后进行监听,客户端进行对服务器端的连接

17、,这样就可以进行相互通信了。21第 4 章 系统设计4.1 开发语言及环境开发语言:c+开发环境:visual studio 20134.2 需求分析4.2.1 功能需求分析( 1)用户端之间的信息发送,本程序需要实现的最基本的功能。用户在界面上可以将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息正常的发送给相应的其它用户,这个过程中的客户端与客户端之间使用点对点发送信息,利用TCP/IP 协议中的UDP 协议。( 2)在线用户主机IP 列表的维护。在用户发送信息之前,需要选择相应的目的地端IP,这也就需要客户端拥有在线用户主机的IP地址,这个在线主 机列表的维护是需要客户端

18、定时自动向服务器端发送信息,服务器端收集并维护在线用户列表,再发送回客户端。需要在客户端和服务器端都使用定时器来完成此功能。( 3)在 C/S 模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。4.2.2 数据需求分析( 1)客户端之间聊天信息。在控件上显示时格式化,更易于

19、用户的查看自己发送或接收到的信息。( 2)在线用户聊天信息。服务器端存放在适当的空间中,在发送给客户端时,对信息列表进行格式化,便于客户端提取信息。( 3)客户端向服务器端发送的确认在线信息。包括客户端刚刚启动时的初始化信息和在使用过程中的确认在线信息。( 4)其它程序内部可能需要设计的数据结构体。4.2.3 性能需求分析( 1)可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出

20、相应的处理,使程序具有较高的容错性能。( 2)宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂性,模拟QQ 等现有即时通讯工具的界面,使用户能很容易看懂并使用。( 3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理解整个系统的设计思路和实现细节。( 4)模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。4.2.4 运行需求分析( 1)用户界面程序较小,启动速度快。可在网络中使用。启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。( 2)故障处理在遇到可预知的故障

21、与情况时,能提示用户;在遇到不可预知的故障时能安全退出。4.3 程序流程图首先在服务器方,利用socket()函数建立流式套接字,返回套接字号s, 接着利用bind()函数将套接字s与本地地址绑定,紧接着利用listen(0 函 数通知TCP监听客户方,服务器准备接收连接,没有连接的话,服务器方通 过closesocket()关闭套接字s,服务结束。有连接的话,在客户方,通过 socket()函数建立流式套接字s,此时在服务器方,建立连接,通过accept() 返回,得到新的套接字ns,客户方通过connect。将套接字s与远程地址连接, 此时服务器方/客户方在ns/s上读/写数据,直到交换完

22、成。交换完成后,服 务器方/客户方关闭套接字ns/s,最后服务器方通过closesocket()关闭最初 套接字s,服务结束。具体设计过程如图1-2所示。图124.4 模块设计4.4.1 服务器首先运行服务器,服务器侦听端口消息,等待客户端向其建立连接的中请,一旦接收到客户端的连接请求,服务器将返回一个新的套接字描述符,通过该描述符调用数据传输函数即可与客户端进行数据的收发。服务器若接收的是登陆信息,向该用户发送在线用户列表,并更新服务器的在线用户列表;若收到的是发送信息,服务器解析信息,然后通过广播消息,向其所有 线用户列表发送消息。具体代码如下:3Q1302 3。3 3M305305307

23、3。830931031131231331431531631131S319320321322323324Qvoid CDes_Chat_Server44 D9Dlg: OnBnClicIcedConnect / TODO; Add your control notification handler code here if (t 一BYTE fl,f2rf3jCString name;(CIPAddressCtrl * (GetDlgltem(1DC_SERVERIP |i )Address f 1fZf3);CString ip;ip. Fonrtat _Tid. Sdd").J霜;

24、e bclient - true;in_clientSocke t. Create ():if (m_clientSocket - Connect (ip f GetDlgltemlnt (IEC_P0RT)i ) m_clientSocfeet . Init (this;Se tDl g H temTe Kt (I EC 5HOWTEKT t T,客户端已连接! "'); m binit = true;elsem clientsocket. close t);Af KMessageBox (_T *client eonneetion failed*1) ? m binit

25、= false;MJ Des Chdil_Server44CI® Microsoft Visudl Studio文件田蜥GD 项目的 生唠面 WiW)团队M IRE WG) 强葛姑的©行析赳)营口改)罂助IWQ 壮*匕产亨 卜拿地Wnd吁 调试a- Debug,理二国 上当 dient&cxketcpfDeJ.ChiLStrrtr+HMDlg.hDei_Chaft_5erv.-i_DiALOG - Di审益 D,jChiL5*r¥Er4*QflDlgiCpp +1 X- OnBnCIktcecilCannectG+ CD«_Chat_-Servw

26、444HDIg344 Bvoid CDes Chat Seever4 4:0 BDig: OnBnClickedButton!(>345 I / TODO: Add your control notification handler code here if (!m binit)AfsfflessageBox (_T (wnct connection to the server1") j return;)Cstring- in;CString str_naine; CMessg msg;GetDlgltemText(IDt_INPUTTEXT , in); GetDlgltem

27、Text工DC二rstr_name); if (in.GetLengthI<1 (return;)in.TrimRightt T("">>setDlgItemTextidc_ihputtext _T(H+,j); if (in.GetLengthI>2 (3tr_name +=网说:闰;E 3MsgXisX + str name ; lb += fW4.4.2 客户端在运行服务器之后,运行客户端。客户端首先向服务器提出建立连接请求, 然后建立一个套接字描述符,通过该描述符调用数据传输函数即可与服务端 进行数据的收发。用户登录成功后,向服务器发送登陆消

28、息,并更新本地在 线用户列表,然后通过服务器实现与其他客户聊天;当客户退出,向服务器 发送下线消息。具体代码如下:es_ChaLCliE-n5L4420 Microsoft Visual Studio生向闻 两皿 团队Mi工艮卬 湃试图 优茶嫡由© 野酢面 忘口幽 叫地革:电 Windows 调/S - DvbugDe-i_Ckat_IM.DdAJLOG - Dialer+ CClierrtSocfcrtDe、1cli #L_CK EM2Wlg,色叩牛 OriRecewefint nErraiCode-)CttrMSotkjSiipfS KCSocket:z OnRe ce ive(

29、nE rrorCMessg temp;-temp.Serializef*ra_aSeasionln) jtemp.m strText += "rnT,;m_dlg->m_3MsgLi st += temp. nti_s t rText;m_dlg->se tDl gl teir.Te st (I DC_s kqwtekt , m_dl9- >m_sMsgL i st);int linenum = £ (CEdit*) (cn_dlg«>GetDlgl t em (I DC_SHOWT'EXT) J) *>GetLineC-Di

30、uit ();(CEdit *) (in_dlg-X3etDlgltem ( idc-showtext) ->LineScroll (linenimi);if f!m dlg->jQ be 1 lent)for (POSITION pos = m_dlg->in_connectionList.GetHeadPosition () ;pos 1 =NULLi)CC1 ientSocket *t = (CC1 ientSocket *)m_iilg->jn_connectionLiit u<3etNext (pos if (t-:xn hsocketE =thi3-&

31、gt;m hsocket)t - >SendMe ssage (s.temp);)while (!m_a5essi.Qnln->lsBuf ferEmpty ();svoid CClientSocket : : Init (CDe s_Chat_C lient4 4 2 0Dig *dlg)4.4.3 加密模块724 CString strlnPutj strKeyF strQutPut;72 Sni_dlnput. 'GetWindowText (strInput);m_dKe y,Ge i ndowTe x t(s t rKey);727 §"if

32、(atrKey = "123456")72 BP/730731732733734誉I73可73773S739740741742743744745?46729if (s t r In Put. Ge tLength () && strKey.GetLength (J)char pinPut max_path;strepyplnPutR (LPCTSTR)strinput);char 5XKeyMAX_PATH);strepy(szKeyf (LPCT3TR)strKey);char szoutEnctypt MMC_FATH);StrTaHeK(pinPut);strepy(szOutEnctyptt encrypt(pinPut szKeyn 1);s trOutFut . Farmat (_T¥ 3 "). 3 zC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论