在数据的存储和传输过程中,为了数据的安全,往往需要对数据进行加密。 在多数情况下需要对加密的内容进行解密,也有些情况只需要将数据加密存储比 对。对于可解密的算法中,又被分为了对称加密和非对称加密,这两种加密算法 的区别在于解密算法是否与加密算法一致上。非对称加密采用公钥加密和私钥解 密,保障解密算法不易被泄露破解。
在本文中采用了两种加密算法,一种是 Md5 不可逆加密,另一种是 RSA 非对称加密算法。MD5 全称 Message-Digest Algorithm 5,它将内容变成了一个 128字节的大整数,是一种不可逆的字符串变换算法,所以它常用在不可抵赖性机制 中,比如防文件篡改等应用。RSA 算法常被用在数字签名和数字加密,是非对称 加密算法的典范,至今也还没有被完全破解过[15]。当生成了 RSA 非对称密钥对后,将公钥发放给加密端,将私钥保存到解密端。在获取到加密端加密的数据后解密端使用私钥对数据进行解密。
3 B/S即时通讯系统设计与实现
本论文以实现“我要走”旅游网(51go.me)的即时通讯系统设计为目标,通过对即时通讯系统的系统分析明确出系统需要的各项功能,以及为了实现这些功能需要的系统性能,综合考虑功能和性能的平衡性,确定了自己的一套系统架构。综合来说,我要走旅游网的系统架构由三个层面组成,分别是客户端层面,主要处理用户账号相关的登陆注册功能;服务器端,即时通讯系统的核心,用于存储即时通讯的目的路由,负责对接即时通讯的两端;数据库端,即时通讯系统的基础,存储了即时通讯过程中产生的所有数据,其中mysql关系型数据库存储读操作频繁、写操作不频繁的账号相关信息,nosql存储写操作频繁的会话和即时聊天消息。三个层面各有自己的特点,同时三个层面相互配合,共同组成了B/S模式下的即时通讯系统。如下图所示:
图3. B/S即时通讯系统模式图
首先,用户A浏览我要走旅游网客户端网页过程中,在需要和其他用户进行即时通讯前,需要先登陆我要走旅游网,登陆失败后数据库会提示重新登陆并记录失败次数,当持续登陆失败到一定次数后,系统会锁定用户账户一定时间,以防恶意破解。登陆成功后,用户就可以直接和自己感兴趣的用户B进行即时通讯。向用户发送消息后,首先客户端会向服务器发送一条消息,消息中记录了用户需要发送的对象B账号信息,然后服务器从自身存储的路由表中找到B存储在服务器的信息,然后直接对接A与B,这样A和B就可以畅快的进行即时通信了。
3.1 系统架构
(1)服务器端
在服务器端通过DWR3.0构建DWR服务器,在服务器端为DWR服务添加Listener监听器,每当客户端向服务器端发送请求时自动为客户端生成对应的ScriptSession,记录客户端的js执行上下文,当到一定时间或者客户端用户主动关闭页面时,服务器端的Listener会删除对应的客户端页面所关联的ScriptSession。服务器端通过Listener文护了一个在线用户的客户端页面ScriptSession列表,当存在用户发送消息的请求时,首先进入这个ScriptSession列表中找到对应的页面ScriptSession,然后通过这个ScriptSession将需要发送的消息直接推送到所在的页面,就完成了一次消息传送。整个流程过程如下:
图4.服务器端架构图
(2) Web客户端
客户端为浏览器端的Web页面,通过引入DWR官方的js插件util.js和engine.js,文护了一个DWR环境,使客户端的页面脚本可以直接执行DWR服务器上规定的服务器方法,大大简化了信息传送过程中客户端和服务器端的交互,减少了网络数据传输量,提升了系统的响应速度,提升了用户体验。通过DWR环境,可以直接在页面中将后台DWR服务逻辑通过js代码执行,实现了在不刷新页面的情况下接收发送显示消息。整体流程如下: P2P模式下的即时通讯系统设计(5):http://www.youerw.com/jisuanji/lunwen_21657.html