实验五 网络编程与安全 实验报告
目录
一、代码托管地址
网络编程与安全-1
实验目的
两人一组结对编程:
0. 参考数据结构应用
- 结对实现中缀表达式转后缀表达式的功能
MyBC.java
- 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用
MyDC.java
- 上传测试代码运行结果截图和码云链接
实验步骤
1.编写MyBC.java
(在前几周的四则运算作业中已经完成,只需拷贝过来)
方法测试
2.在MyDCTester.java
中调用MyBC.java
和MyDC.Java
3.运行MyDCTester.java
,提交结果截图
遇到的问题及解决办法
这个实验的代码在之前已经写好了,只需组合在一起就行了,没有遇到什么问题
实验小结
本次实验的主要目的是练习把各个代码组合在一起形成一个系统,在测试类中调用
MyBC.java
和MyDC.Java
中的方法,可以很方便的对中缀表达式求值
三、网络编程与安全-2
实验目的
结对编程:一人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
- 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
实验步骤
- 编写客户端和服务器的代码,参考java 客户端连接服务器 发送对象 打印字符串
- 在客户端中输入中缀表达式,转化成后缀表达式传给服务器
- 服务器接收后进行计算,把结果传回客户端并打印
遇到的问题及解决办法
- 问题:不知道服务器如何建立,不知道如何把信息传给服务器
- 解决办法:参考网上代码java 客户端连接服务器 发送对象 打印字符串和java 服务器怎样给客户端传输数据
实验小结
本次实验主要问题是建立客户端与服务器的连接,并实现数据的传输。一开始看书上的代码不太懂,在网上查了相关资料之后才弄懂。之后就只需在客户端和服务器实现
MyDCTester.Java
的功能就行了。
四、网络编程与安全-3
实验目的
加密结对编程:1人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
- 服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
实验步骤
- 在上个实验的基础上对客户端要发送的信息进行AES加密
- 对接收的信息进行解密,计算结果
- 把结果发回客户端,并在客户端显示
遇到的问题及解决办法
- 问题:AES加密算法如何使用
- 解决办法:参考JAVA实现AES加密,创建
AES.Java
,在客户端调用其中加密方法进行加密,在服务器调用解密方法进行解密
实验小结
本次实验的难点是AES加密。其实之前学了DES加密,不过这次想换种方法。于是在网上找了相关代码,也算是学会了一种新的加密方法。
五、网络编程与安全-4
实验目的
密钥分发结对编程:1人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
实验步骤
- 在上次的基础上用DH算法对AES的密钥进行加密
- 服务器解密从而获取密钥,再对密文解密,计算结果
遇到的问题及解决办法
- 问题:DH算法的使用
- 解决办法:参考老师博客Java 密码学算法倒数第二部分
实验小结
本次实验主要是加上DH算法对密钥进行加密以保证安全。其实老师的博客之前就看过了,不过之前看的主要是DES和RSA加密算法,忽略了DH算法,这次重新看一遍,把代码拷下来运行一下,问题就解决了。
六、网络编程与安全-5
实验目的
完整性校验结对编程:1人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
实验步骤
- 在上次实验的基础上,发送明文的MD5值给服务器,校验完整性
- 服务器把解密后的信息的MD5值与客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
遇到的问题及解决办法
没什么太大的问题,老师的博客里有求MD5值的代码,只需把其中的方法抽象出来,在客户端和服务器调用即可。
实验小结
加了个MD5值用来进行完整性校验,做的比较顺利。
七、实验总结
这五个五实验不需要自己写很多新的代码,只是把之前学的组合在一起,让其发挥功效。五个实验层层递进,每次都加一个功能,其实越做到后面越简单,只要客户端和服务器没有问题,那么只需在其中调用相应的方法就好了。所以此次实验主要是考察我们对代码的组合,复用。练习的是把各种功能的代码组成一个系统,从而实现强大的功能