- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络加密聊天软件设计与实现
网络加密聊天软件设计与实现
功能需求与用户界面的设计
网络加密聊天软件要实现的功能主要有两个方面:第一个功能是网络聊天,只要两台或多台主机同时可以上网,又安装了该软件,双方即可以互相通信,局域网的广播/组播功能使多方的聊天也很容易实现。第二个功能也是一个可选的功能,在你认为比较信息需要绝对保密地情况下,可以选择加密发送,即使其他人看到了你的聊天记录,也只是一连串的字符。此处的加密方式我采用的是MD5算法,由于它的不可逆性,实现起来是比较安全的。
如图1为该应用程序的主界面。
图1 网络加密聊天的主操作界面
如下图所示,总共有六个主要的图标:在线、离线、断线、设置、关于这个程序和加密发送。
在线的作用是当网络连接成功后,在互联网或局域网中,就可以找到自好友,
好友也可以同时发现自己,这样就可以进行聊天。
离线的作用是当你有事情离开,并且在一定时间内返回,而又不想让的好友一直等你,进行自动回复,可以点击这个功能。
断线的作用是彻底地离开你的好友群,你的好友将失去于你的联系。
设置的作用是针对用户的。如下图所示:
设置您的名称和设置您的图标可以在网络上显示您自定义的名字和您选择的图
标,如。您离线时的留言将在您点击离线这个功能后起到自动回复的作
用。发送后最小窗口是在每次用户在发送消息后主界面自动最小化。每次启动时
出现的作用是当每次启动这个软件时,设置用户参数的功能也一起出现。点击保
存后,上述的选项随之生效,并出现显示对话框。点击退出后,将退出这个界面。
加密发送是个可选功能,在不点击此功能聊天情况下,直接按Ctrl+Enter发送消息。当你需要加密你的消息时,直接点击这个选项,即可以完成发送和加密,别人看到的只是一些字符串,大写十六进制的ASCII码。
应用软件的设计与实现
2.1软件的结构
由于Java语言是一种面向对象设计(OOP)的语言,在设计软件的时候,我采用算法设计的分治法来设计软件结构。设计一个最顶层的功能模块,然后分别往里面添加各个功能模块,而各个功能模块又有低一级的功能模块所构成。
软件的主界面是最顶层的功能模块,是一个容器。一个容器包括了两个面板,即第二层的功能模块。第一个面板由下一层的功能模块来实现。第二个面板由六个小功能模块实现。层次结构如下图所示:
2.2软件功能的实现
软件功能主要是靠原代码来实现,由于采用Java编写,我写了五个主要的类,分别是:如下图
其中frm_ahout类实现了功能,frm_set这个类实现了这个功能,ctools这个类实现了网络连接和找到在线用户的功能。MD5和mainform是主要的两个类,MD5实现了加密,mainform实现了主界面和发送数据。
我这里的采用的加密算法是MD5算法。MD5的全称Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人前被压缩成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。/*getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串
返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.*/
public String getMD5ofStr(String inbuf) {
md5Init();
md5Update(inbuf.getBytes(), inbuf.length());
md5Final();
digestHexStr = ;
for (int i = 0; i 16; i++) {
digestHexStr += byteHEX(digest[i]);
}
return digestHexStr;
}
mainform类的部分代码:
void ed_input_keyTyped(KeyEvent e)
文档评论(0)