网络加密聊天软件设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络加密聊天软件设计与实现

1.功能需求与用户界面的设计

网络加密聊天软件要实现的功能主要有两个方面:第一个功能是网络聊天,只要两台或多台主机同时可以上网,又安装了该软件,双方即可以互相通信,局域网的广播/组播功能使多方的聊天也很容易实现。第二个功能也是一个可选的功能,在你认为比较信息需要绝对保密地情况下,可以选择加密发送,即使其他人看到了你的聊天记录,也只是一连串的字符。此处的加密方式我采用的是MD5算法,由于它的不可逆性,实现起来是比较安全的。

如图1为该应用程序的主界面。

图1 网络加密聊天的主操作界面

如下图所示,总共有六个主要的图标:在线、离线、断线、设置、关于这个程

序和加密发送。

在线的作用是当网络连接成功后,在互联网或局域网中,就可以找到自好友,好友也可以同时发现自己,这样就可以进行聊天。

离线的作用是当你有事情离开,并且在一定时间内返回,而又不想让的好友一直等你,进行自动回复,可以点击这个功能。

断线的作用是彻底地离开你的好友群,你的好友将失去于你的联系。

设置的作用是针对用户的。如下图所示:

设置您的名称和设置您的图标可以在网络上显示您自定义的名字和您选择的图

标,如。您离线时的留言将在您点击离线这个功能后起到自动回复的作用。发送后最小窗口是在每次用户在发送消息后主界面自动最小化。每次启动时出现的作用是当每次启动这个软件时,设置用户参数的功能也一起出现。点击保存后,上述的选项随之生效,并出现显示对话框。点击退出后,将退出这个界面。

加密发送是个可选功能,在不点击此功能聊天情况下,直接按Ctrl+Enter

发送消息。当你需要加密你的消息时,直接点击这个选项,即可以完成发送和

加密,别人看到的只是一些字符串,大写十六进制的ASCII码。

2.应用软件的设计与实现

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位的电脑。

MD5的部分源代码:

/*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)

{

if((mainform.onlinestate!=1)&(e.isControlDown()))

{

JOptionPane.showMessageDialog(null, "没有处于在线状态,不能发送消息!");

return;

}

if

((!cbo_bc.isSelected())&(mainform.getuserip().trim()=="")&e.isControl Down())

{

JOptionPane.showMessageDialog(null,"你还没有选择给谁发消息!"); return;

}

String userinput;

userinput=ed_input.getText().trim();

if (e.isControlDown()&(e.getKeyChar()=='\n'))

void but_exit_actionPerformed(ActionEvent e) {

MD5 md5=new MD5();

String cyphertext;

String plaintext;

plaintext=ed_input.getText().trim();

3.软件安装和使用说明

3.1软件安装

由于该软件经过JBuilder9编译归档后已经生成可执行文件网上加密聊天.exe,只要双击它即可运行。另外还有Windows、linux、mac和solaris四种

相关文档
最新文档