ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:1.05MB ,
资源ID:26357736      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26357736.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(加密通讯聊天平台的设计与实现以 WEB 平台为例.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

加密通讯聊天平台的设计与实现以 WEB 平台为例.docx

1、加密通讯聊天平台的设计与实现以 WEB 平台为例摘 要21世纪是信息时代,随着计算机技术、多媒体技术和互联网技术的飞速发展,我们足不出户就能够联系到处于世界另一个角落的朋友,获取世界各地的信息。IM(Instant Messaging,即时通讯)应用已经成为人们交流沟通必备的工具。为国人熟知的就有QQ、weChat等。QQ和weChat等IM软件发展到今天,已经具备完善的通讯功能,简单易用且随时随地。但一些特定行业单位,比如国安部门、军队单位、军品研究生产单位或者有商业机密和研发机密的需求的一些公司,出于其安全性和保密性的要求,其办公网络是与Internet完全物理隔离的。那么为这些特定企业设

2、计和开发即时通讯系统就显得非常重要和必要。本次毕业设计的加密通讯聊天平台,以AES 加密算法和RSA加密算法相结合实现信息加密,论文具体介绍整个系统的设计与实现过程,使用Layer、Bootstrap JQuery开发前端界面,SpringBoot搭建后端框架。关键词:SpringBoot;Shiro;WebSocket;AES加密;RSA加密 AbstractThe 21st century is the information age. With the rapid development of computer technology, multimedia technology and

3、Internet technology, we can reach friends in another corner of the world and get information from all over the world without leaving home. IM (Instant Messaging, instant messaging) application has become an essential tool for people to communicate.QQ and weChat are well-known to the people. With the

4、 development of IM software such as QQ and weChat to this day, it already has a complete communication function, which is simple and easy to use, anytime, anywhere. However, some specific industry units, such as national security departments, military units, military product research and production

5、units, or some companies with the needs of commercial secrets and research and development secrets, because of their security and confidentiality requirements, their office network is completely physically isolated from the Internet of. So it is very important and necessary to design and develop ins

6、tant messaging systems for these specific enterprises.The graduated encrypted communication chat platform uses AES encryption algorithm and RSA encryption algorithm to achieve information encryption. The thesis specifically introduces the design and implementation process of the entire system, uses

7、Layer and Bootstrap JQuery to develop the front-end interface, and SpringBoot builds the back-end framework.Key words: SpringBoot;Shiro;WebSocket;AES;RSA 第一章 绪论1.1研究背景和意义1946年2月14日,世界上第一台通用计算机“ENIAC” 在宾夕法尼亚大学被发明出世。1969年6月,世界上第一个采用分组交换技术组件的网络诞生,即“阿帕网”,后又发展为今天的互联网。随着计算机技术、多媒体技术和互联网技术的快速发展,改变了人与人之间从古时的

8、车马邮件,飞鸽传书的通讯方式,人们之间的沟通方式更加多元。IM(Instant Messaging,即时通讯)因应而生并飞速发展。IM系统允许用户可以随时使用网络实地通信,即时性是其最大的优点,只要双方同时在线,即可实现交流通讯。众所周知,18至19世纪是蒸汽时,一切发展的动力源于蒸汽;19至20世纪是电气时代,电的发现以及电机等以电驱动的各类设备的发明与使用,推动着整个世界的生产迈向自动化,机械化。20至21世纪无疑就是信息时代,随着计算机技术、多媒体技术和互联网技术的飞速发展,我们足不出户就能够联系到处于世界另一个角落的朋友,获取世界各地的信息。IM系统已经成为人们交流沟通必备的工具。第一

9、个即时通讯工具是几个以色列青年在1996年11月发明的。ICQ是英文I SEEK YOU 我找你的谐音。因为中国接入互联网年份较晚,所以ICQ并不为中国普通大众所熟知。与ICQ有着异曲同工的QQ,则是家喻户晓的的IM产品,其优良的软件性能和免费特性,深受用户喜爱。随后诞生的微信,亦长江后浪推前浪。QQ和微信已是中国人民不可或缺的通讯工具。QQ、微信、阿里旺旺等通讯软件都是基于用户安装客户端软件,即C/S架构而存在。虽然之后推出了网页网版,但阉割了其大部分功能,要想有良好的用户体验,还是需要下载并安装其软件到电脑里或者手机里。如果设备里没有安装软件,或者要联系的人没有安装软件,那么就就会有一个等

10、待安装的限制,便利性受到约束。而且没一次软件新功能的推出,都需要用户去升级软件,很大程度上并不能照顾到所有用户。随着网页WEB技术的发展,更多的软件脱离了C/S架构模式,转为B/S架构。而WebSocket的出现,也为IM系统设计成B/S架构提供了可能。采用B/S架构的IM工具,用户就可以摆脱下载软件安装软件才能使用软件的桎梏,只要电脑里、手机里有可以访问网页的浏览器,即可以使用其进行通讯交流,不必考虑设备差异。当下互联网WEB应用在市场的比重占有率逐步升高,且随着移动互联的发展,WEB应用的多终端兼容实现的优势也充分体现。相较于传统C/S架构,B/S架构有以下优点:轻量化开发、易维护更新、受

11、众面广、简化用户使用流程、界面美观、良好的兼容性等。1.2设计思路虽说是加密聊天通讯工具,但其功能实现也不外乎是传统IM工具的所应具备的能力。如基本聊天功能,用户登录与注册功能,文件传输功能等。基于功能实现属性,我将分为以下几个模块:用户注册/登录模块、私聊/群聊模块、日志模块、系统模块、公共文件模块、加密功能模块、好友模块、个人信息模块。其中聊天模块主要实现P2P私人聊天和建群群聊功能,文件和图片传输功能。该系统后端将基于SpringBoot框架开发,技术选型为: Java, MyBatis,WebSocket,WebRTC等;前端页面设计基于Bootstrap4,Jquery,Layer等

12、;数据库选用Mysql 5.7;版本控制即打包使用Maven;加密功能模块暂定为AES加密和RSA加密双结合实现信息加密处理,具体过程为:聊天信息为AES对称加密,但要对AES密钥用对方的RSA公钥加密。双方在得到加密信息后,需要用自己的密钥解密被RSA加密过的AES密钥,并用这个AES密钥解密被AES加密的信息。这样一来,传输的数据都是密文,且只有秘钥才能解密。以此来达到更为安全的加密效果。1.3论文整体结构结构安排如下:第一章:绪论。介绍本系统的研究背景和意义,简述系统内容和结构安排第二章:相关理论知识。对系统开发中相关技术进行介绍,主要包括、SpringBoot、Maven、Shiro、

13、Redis等第三章:关键技术研究,对系统关键技术WebSocket、AES加密技术、RSA加密技术进行叫详细说明第四章:对系统功能模块进行图例演示,阐述系统概要设计第五章:系统实现第六章:项目演示和总结第七章:文献综述第二章 相关理论知识2.1 开发环境和技术选型操作系统:Windows 10 操作系统;数据库:mysql-5.7; Java 环境:JDK1.8; 浏览器: Microsoft Edge Beta开发工具:IntelliJ IDEA 2019.2.3 x64、Navicat 12 for MySQL系统环境:Java EE 8、Servlet 3.0、Apache Maven

14、3主框架:Spring Boot 2.0、Spring Framework 5.0、Apache Shiro 1.4持久层:Apache MyBatis 3.4、Alibaba Druid 1.1视图层Bootstrap 4、Thymeleaf 3.02.2 SpringBoot2.2.1 SpringBoot 简介SpringBoot是一个java开发框架,它简化用Spring开发应用的时候,繁琐的搭建过程。SpringBoot其实不是一个全新的产品,我们可以从它身上看到前辈SSH和SSM的影子。它默认配置了很多框架的使用方式,例如Mybatis、Shiro等等,就像mave可以整合所有的j

15、ar包一样2.2.2为什么使用SpringBootSpringBoot之前SSM框架或其他Spring框架,在整合其他功能框时都需要配置文件,这导致项目中的配置文件越来越多,内容越来越繁杂。项目中常常因为配置文件出错的原因,导致项目运行出错。SpringBoot的出现,解决开发框架的繁杂配置。SpringBoot约定大于配置的理念,使它能快速整合第三方框架,减少甚至不需要配置文件。对于一个开发团队来说,极大减少工作成本、更加利于开发,且后期维护也更加简单。2.3 Apache Shiro2.3.1 可靠的安全框架Apache Shiro 是一个Java 安全框架,提供了认证、授权、加密和会话管

16、理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。1)Authentication 的身份认证/登录,验证某个已认证的用户是否拥有某个权限;2)Session Manager:会话管理,用户登录后在没有退出之前,它的所有信息都在会话中。对Web开发十分友善;3)Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;4)Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;我的认知是:Shiro是一套安全认证和权限管理框架,而不是一个取之能用的工具。既然是框架,Shiro 就不会去主动维护用户

17、、维护权限;简而言之,架子人家给搭好了,而登录验证逻辑,权限赋予逻辑等等之类“里子”需要我们自己去填2.3.2 总结shiro的三板斧一个完整的Shiro业务,必须包括Subject、SecurityManager、Realm,我称之为shiro的三板斧,打完即收工:1)Subject:主体,代表了当前 “用户”;所有 Subject 都会绑定到 SecurityManager,且与 Subject 的所有交互都会委托给 SecurityManager; Subject 更多只是一个门面作用;SecurityManager 才是实际的执行者;2)SecurityManager:安全管理器;所有

18、与安全有关的操作都会与SecurityManager 交互;可以看出它是 Shiro 的核心;3)Realm:域,谁来负责和数据库进行交互呢?Realm!谁来给用户做身份认证和赋予权限呢?Realm!也就是说 SecurityManager 要做的操作,其实都是交于Realm的2.4.3 UsernamePasswordToken实现过程中我们可能会碰到这个家伙,它用于将用户输入的用户名和密码封装成token;普通的登录无非就是输入账号密码。可以通过调用getPrincipal()方法来获取token中的用户名并以此来进行登录验证;实质就是通过调用本地getUserName()方法直接获取存储

19、在token中的username。 credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等;可以通过getCredentials()方法来获取token中的密码,该方法与获取用户名的方式一致,调用本地getPassword()方法获取存储在token中的密码由此可见UsernamePasswordToken 的重要性;这个类同时继承了HostAuthenticationToken及RememberMeAuthenticationToken,因此UsernamePasswordToken能够存储客户端的主机地址以及确定token是否能够被后续的方法使用(即登录时的“记住我

20、”)。 出信息安全考虑,验证完成后通常会调用clear方法清除token数据,其中对用户密码(password)的处理较为特殊,UsernamePasswordToken不是单纯地:“password = null”,而是先将password引用对应的char数组的值全部置0,然后断开调用。2.4.4 ShiroConfig配置类shiro做什么?怎么做?很大一部分(甚至可以说完全)由 shiroConfig约定而为。简单点,shiroConfig就是shiro一个配置类,类似于以前的xml。林林总总有个多配置,个人觉得以下几个配置在配置类中比较重要:安全管理器 SecurityManager

21、、shiro拦截器、自定义Realm (后期要做第三方)、session管理器。1)SecurityManager 在前边讲过,作为shiro的核心, 主要协调Shiro内部的各种安全组件 。我在使用过程中,接触到的主要是用来配置realm2)shiro拦截器( shiroFilter)*可以用设置各个页面的访问权限,一般在为进过shiro认证之前,这里只会放行登录/注册操作页面,错误页面,登出页面和一些静态文件。2.4.5 RealmShiro的认证和授权操作,是由realm类来实现的;一般这个类是自己自定义的。自定义的Realm类要继承AuthorizingRealm类,并且重载doGet

22、AuthorizationInfo和doGetAuthenticationInfo两个方法。第三章 关键技术研究3.1 WebSocket3.1.1 WebSocket简介WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层,和HTTP一样基于TCP传输。但WebSocket是全双工传输形式,也就是说可以实现客户端和服务器之间双向交流,客户端实时了解服务器数据变化,这种形式特别适合用来做聊天程序。WebSocket最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,这种情况下可以实现:较少的控制开销、

23、更强的实时性、保持连接状态、数据格式比较轻量,性能开销小,通信高效。建立在 TCP 协议之上,服务器端的实现比较容易。3.1.2 系统WebSocket事务图3.1.3 WebSocket工作原理1)WEB服务端开启WebSocket服务并等待客户端用户连接。2)浏览器创建WebSocket类对象并向服务端请求连接。3)WEB服务器触发WebSocketService的createWebSocketInbound方法并接受数据,创建对应onOpen方法。4)WEB服务器判断连接是否创建成功,如失败执行步骤5,成功执行步骤65)连接创建失败,触发客户端error回调函数,结束WebSocket连

24、接6)连接创建成功,触发客户端onopen回调函数,完成WebSocket连接7)客户端通过send方法发送数据到WEB服务器8)WEB服务器触发onMessage方法接受客户端数据9)WEB服务器通过sendMessage方法像客户端发送数据10)客户端触发onMessage回调函数接收数据并进行相关操作11)客户端通过调用close方法关闭WebSocket连接12)服务器触发onClose方法进行关闭连接操作,结束WebSocket连接3.2 加密算法3.2.1 AES加密AES是最流行的对称加密算法,对信息的加密和解密用的是同一套密钥。加密之初会把文件切分成一个个128位,的小块进行加

25、密。如果文件大小不是16字节的整数倍,那就要在末尾添加一些数据凑够。AES有两个输入一个输出,输出是密文,输入自然是密钥和明文。输出是明文,输入自然就是密钥和密文。当然具体的加解密过程十分复杂。AES 是非常安全的,最短的密钥也会有128位,大部分密钥长度会比128位大。密钥越长也就越安全,但随之加解密的速度就越慢。AES加密非常常用,很多 CPU 在硬件层面上都会支持 AES 的加解密,https 就是使用 AES 来进行数据的加密的,因为 AES 是 TLS 和 SSL 标准的一部分。3.2.2 RSA加密对称加密和非对称加密是密不可分的。AES是对称加密,而RSA则是非对称加密算法。如果

26、没有 RSA 算法,现在的网络世界可以说毫无安全可言。ssh 协议也是基于 RSA 加密算法才能确保通讯是加密的,可靠的。非对称加密算法的加密解密过程是这样的:1)用户A使用RSA算法生成两把密钥,就是公钥和私钥。顾名思义,公钥就是公开的,私钥就是自己保存的。2)用户B想对用户A发送加密信息,用户B可以轻松获取到用户A的公钥,然后用它对信息加密。3)用户A得到加密后的信息,用自己的私钥解密。这样每个人都可以利用公钥发送加密消息,而只有拥有秘钥的接收方才能解读密文看到原消息。第四章 系统功能需求我将系统总体功能分为以下几个模块:用户登录/注册、用户信息更改、头像文件上传、在线多人群聊、在线私聊、

27、系统日志记录、聊天内容加密传输。4.1 注册/登录模块4.1.1用户注册用户注册抛弃传统的用户自由定义帐号密码进行注册,改为现流行的手机号注册新用户,即用户通过手机号接收短信验证码实现注册,因为手机号注册均为个人实名注册,这就保证了帐号的唯一性和真实性。方便用户维护和管理;具体流程为下图:4.1.2 用户登录1)短信登录:因为用户注册的时候用的是手机号,用户在注册成功后,可以通过手机号接收登录验证码进行登录。2)帐号密码登录:用户在注册时设置的密码,即用户的登录密码,用户可以通过手机号加登录密码进行登录。3)第三方登录:用户可以给帐号绑定第三方帐号,实现第三方帐号登录4.1.3 微信第三方登录

28、第三方登录我选用应用较为广泛的微信扫码登录。即帐号可以和用户自己的微信帐号进行绑定,实现微信扫码登录本IM系统。在这个项目中,微信第三方登录的关键点,即用户的系统账号和微信号的绑定。总体可以分为一下三个步骤:对于系统账户与微信的绑定,我的思路是:若是没有绑定过微信的用户扫码登录,即提示其先账号密码登录,系统自动更新Auth表信息;若未未注册用户,则提示其注册,注册时自动更新第三方登录表信息。但扫码登录只是登录的一种,更多的时候用户只是执行简单的登录或者注册;所以我引入了redis服务。 当一个用户是先扫码再登录/注册的,我会在redis保存其openId和unionId信息,执行登录/注册操作

29、时,先去redis取值,如果存在openId和unionId,说明用户此时是在执行绑定微信操作,绑定微信操作完成后清除redis中的openId和unionId信息。这样就可以很简单的区分用户是在进行普通的登录注册或者绑定微信的登录注册了。 怎么确保每一个扫码绑定微信的用户,能从redis拿到属于自己的openId和unionId呢 ?可以用第一步请求到的code,开放平台给的微信授权临时票据。结合code作为对应的openId和unionI在redis的key,可以确保每一个用户拿到对应的唯一的openId和unionId。4.2 通信模块在线多人群聊、在线私聊的实现相对简单,在WebSoc

30、ket连接成功的情况下,WebSocket基本可以完成以上功能。用户的聊天记录信息都会在加密后实时保存在Redis服务器中,当用户退出系统后,系统将会获取Redis中的聊天信息,保存到数据库中。用户下次登录,服务器将从数据库获取对应的加密聊天记录,解密后回显指用户界面。具体流程图如下4.3 加密模块加密功能模块暂定为AES加密和RSA加密双结合实现信息加密处理,即其登录信息和聊天信息为AES对称加密,但要对其解密密钥实现RSA加密传输,即客户端和服务器通过RSA算法各自生成一套公钥和私钥,并交换公钥。信息被AES算法加密,AES的key被RSA算法加密。双方在得到加密信息后,需要用对方的公钥解

31、密被RSA加密过的key,并用这个key解密被AES加密的信息。这样一来,传输的数据都是密文,且只有秘钥才能解密。以此来达到更为安全的加密效果。第五章 系统具体实现5.1 系统架构设计系统采用经典的 B/S 架构体系,即三层架构体系。分别为表现层(UI)、业务逻辑层(BBL)和数据访问层(DAL)。而项目的设计模式也是较为传统实用的MVC模式, 即Model(模型),View(视图),Controller(控制)。1)表现层:主要负责展示系统业务和数据,实例化用户的业务操作;较为通俗的说法即前端页面展示。我将使用HTML5、Jquery、Bootstrap和Thymeleaf实现。2)业务逻辑

32、层:作为连接前端和数据库数据的中间媒介,业务逻辑层极为重要,它将表现层,即前端用户的操作行为和数据请求进行处理,与数据库做数据交互,将处理结果返回表现层。起着中间枢纽的重要作用。MVC设计模式也在该层有极大的体现3)数据访问层:原始数据的操作层,对原始数据进行操作,具体的功能是为表 现层以及业务逻辑层提供需要得数据服务。 5.2 系统功能设计5.3 数据库设计5.3.1 数据库E-R图用户与系统日志用户与用户日志用户和在线用户表5.3.2 数据库表设计表1 用户表用户表(Employee)字段名意义数据类型宽度是否可为空主键id用户idvarchar64否login_name登录账户varchar100否nick_name用户昵称varchar100是salt盐varchar1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1