20145301实验五 Java网络编程及安全

北京电子科技学院(BESTI)实验报告

课程:Java程序设计

班级:1453

指导教师:娄嘉鹏

实验日期:2016.05.06 18:30-21:30

实验名称:实验五 Java网络编程

实验内容

  • 1.用书上的TCP代码,实现服务器与客户端。

  • 2.客户端与服务器连接

  • 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端

  • 4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文。计算求得明文的Hash函数值,检查是否与传送过来的一致,如果一直,则表示匹配成功。

    实验步骤

实验步骤

       本次实验我的小组成员是20145331魏澍琛,我负责编写客户端代码的编写,他负责服务器代码的编写。

  1. 客户端的编程主要由三个步骤实现:建立网络连接、数据交换、关闭网络连接。首先我们要建立连接,在Java API中以java.net.Socket类的对象代表网络连接,所以建立客户端网络连接,也就是创建Socket类型的对象,并找出电脑现在使用的IP地址,如图所示:

  2. 接着利用BufferedReader对象获得从服务器传来的网络输入流,用PrintWriter对象获得从客户端向服务器输出数据的网络输出流,用BufferedReader对象创建键盘输入流,以便客户端从键盘上输入信息。
  3. 由于我们需要进行安全传输,所以在传输过程中还要对数据进行加密,一般来说,采用对称性加密算法与非对称性加密算法结合的方式安全性要更高,因此这里先用的是RSA算法,用服务器的公钥先对DES的密钥进行加密,然后将加密后的密钥传给服务器,接着让用户输入需要传输的明文,再使用DES算法对明文进行加密,将加密后的密文通过网络传到服务器,然后计算明文的Hash值,传送到服务器。服务器总共会收到来自客户端发送的DES的密钥、密文以及明文的Hash值,服务器会采用RSA公钥密码中服务器的私钥解密DES的密钥,接着用解密后的DES的密钥对密文进行解密,得到明文。服务器再将解得的明文计算Hash值,检查其是否与传过来的Hash值一致,如果一致说明匹配成功。
  4. 客户端的代码:

  

实验结果如图所示:

发送:



接收:

886774-20160509010033374-944078539.png

实验中遇到的问题及解决过程

  • 一开始运行弹出找不到指定文件的错误:
  • 解决过程:

        用了RSA的公钥文件,在拷贝时拷贝错了目录,应该把Skey_RSA_pub.dat文件拷到工程中与src同级的目录下即可。

PSP(Personal Software Process)时间

步骤耗时百分比
需求分析 20min 11.1%
设计 30min 16.7%
代码实现 60min 33.3%
测试 40min 22.2%
分析总结 30min 16.7%

总结

        这次试验内容比较有意思,我第一次真正实现了,所谓的加密解密的传输,能将所学知识应用在实际还是非常有意义的一件事情。而且本次试验内容有多门学科的交叉,涵盖了密码学、计算机网络以及java的应用。可以更加有助我们对知识的融会贯通。


原文地址:https://www.cnblogs.com/5301z/p/5472244.html