20165334 实验五 网络编程与安全

Posted 淋湿的天空有你

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165334 实验五 网络编程与安全相关的知识,希望对你有一定的参考价值。

20165334 实验五 网络编程与安全

任务1

  1. 结对实现中缀表达式转后缀表达式的功能 MyBC.java
  2. 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
  3. 上传测试代码运行结果截图和码云链接

1、中缀变后缀思路分析

  • 设置一个运算符栈,设置一个后缀表达式字符串;
  • 从左到右依次对中缀表达式中的每个字符x分别进行以下处理,直至表达式结束:

   - 若x是左括号‘(’,将其入栈;

  - 若x是数字,将其后连续若干数字添加到后缀表达式字符串之后,并添加空格作为分隔符;

  - 若x是运算符,先将栈顶若干优先级高于ch的运算符出栈,添加到后缀表达式字符串之后,再将ch入栈。当‘(’运算符在栈中时,它的优先级最低。

  - 若x是‘)’,则若干运算符全部出栈,直到出栈的是左括号,一对括号匹配。

  • 若表达式结束,将栈中运算符全部出栈,添加到后缀表达式字符串之后。

运行成功截图

代码链接

任务二

结对编程:1人负责客户端,一人负责服务器

  1. 注意责任归宿,要会通过测试证明自己没有问题
  2. 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  3. 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
  4. 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  5. 客户端显示服务器发送过来的结果
  6. 上传测试结果截图和码云链接

编程思路

一、搭建服务器端

a)、创建ServerSocket对象绑定监听端口。

b)、通过accept()方法监听客户端的请求。

c)、建立连接后,通过输入输出流读取客户端发送的请求信息。

d)、通过输出流向客户端发送请求信息。

e)、关闭相关资源。

二、搭建客户器端

a)、创建Socket对象,指明需要连接的服务器的地址和端口。

b)、建立连接后,通过输出流向服务器发送请求信息。

c)、通过输入流获取服务器的响应信息。

d)、关闭响应资源

运行截图

代码链接

任务三

加密结对编程:1人负责客户端,一人负责服务器
  1. 注意责任归宿,要会通过测试证明自己没有问题
  2. 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  3. 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
  4. 服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  5. 客户端显示服务器发送过来的结果
运行截图

代码链接

任务四

密钥分发结对编程:1人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题

  1. 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  2. 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
  3. 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
  4. 服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  5. 客户端显示服务器发送过来的结果
运行截图

代码链接

任务五

网络编程与安全-5

完整性校验结对编程:1人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题

  1. 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  2. 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
  3. 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
  4. 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  5. 客户端显示服务器发送过来的结果
客户端截图

服务器截图

代码链接

试验中遇到的问题

一定要先运行服务器后运行客户端
错误:java.net.SocketException: Connection reset

这个问题让我差点吐血,百度上说大多数是防火墙的问题,我关闭防火墙后依旧出现错误,最后换了个id和端口号后运行成功。

参考资料

娄老师博客 java与密码学
课本十三章例子

以上是关于20165334 实验五 网络编程与安全的主要内容,如果未能解决你的问题,请参考以下文章

20165223 实验五 网络编程与安全

20165332实验五 网络编程与安全

2017-2018-2 20165209 实验五《网络编程与安全》实验报告

实验五 网络编程与安全

实验五 网络编程与安全

2017-2018-2 20165331 实验五《网络编程与安全》实验报告