20172327 2017-2018-2 《程序设计与数据结构》实验5报告
20172308 2017-2018-2 《程序设计与数据结构》实验五报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 马瑞蕃
学号:20172327
实验教师:王志强
实验日期:2018年6月13日~2018年6月18日
必修/选修: 必修
1.实验内容
+ 任务1: |
+ 任务2: |
结对编程:(1人负责客户端,一人负责服务器)
1.注意责任归宿,要会通过测试证明自己没有问题
2.基于Java Socket实现客户端/服务器功能,传输方式用TCP
3.客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
4.服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
5.客户端显示服务器发送过来的结果
6.上传测试结果截图和码云链接
+ 任务3: |
加密结对编程:(1人负责客户端,一人负责服务器)
1.注意责任归宿,要会通过测试证明自己没有问题
2.基于Java Socket实现客户端/服务器功能,传输方式用TCP
3.客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
4.服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
5.客户端显示服务器发送过来的结果
6.上传测试结果截图和码云链接
+ 任务4: |
密钥分发结对编程:(1人负责客户端,一人负责服务器)
1.注意责任归宿,要会通过测试证明自己没有问题
2.基于Java Socket实现客户端/服务器功能,传输方式用TCP
3.客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
4.服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
5.客户端显示服务器发送过来的结果
6.上传测试结果截图和码云链接
+ 任务5: |
网络编程与安全
完整性校验结对编程:(1人负责客户端,一人负责服务器)
1.注意责任归宿,要会通过测试证明自己没有问题
2.基于Java Socket实现客户端/服务器功能,传输方式用TCP
3.客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
4.客户端和服务器用DH算法进行3DES或AES算法的密钥交换
5.服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
6.客户端显示服务器发送过来的结果
7.上传测试结果截图和码云链接
2. 实验过程及结果
-
实验一:四则运算以前做过,直接进行截图
实验过程:
-
实验二:和李闻洲同学一起做的,客户端先将四则运算的自动生成题目改为输入中缀表达式,后将生成的后缀表达式传给服务器,最后由服务器调用后缀计算类,最后将答案反馈给客户端。
实验过程:
-
实验三:加入了对称加密,所以改的部分还挺多,首先我改了客户端类,并先用DES加密算法生成密钥,并引用密钥,将后缀表达式加密,传给服务器,然后我在服务器类下面将密钥文件复制进去,在服务器里,读取密钥并将传过来的加密的后缀表达式解密,之后就和实验二一样,计算并反馈。
实验过程:
-
实验四:将对称加密变为非对称加密,过程挺麻烦,我画了一张图:
实验过程:
- 实验五:完成课本二十八章的代码编写
3. 实验过程中遇到的问题和解决过程
问题1:在做第四个实验时,发现客户端总是提示密钥输出到最后好像输出不了了,服务器一点东西都收不到。
问题1解决方案:这个问题其实有很多的同学都遇到了,我找他们咨询,他们告诉我换个加密方式,所以我将DESede
方法改为AES
,发现就成功了。
参考资料
- 《Java程序设计与数据结构教程(第二版)》
- 《Java程序设计与数据结构教程(第二版)》学习指导