zoukankan      html  css  js  c++  java
  • 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与密码学
    课本十三章例子
  • 相关阅读:
    shell学习(三)
    shell学习(四)
    自定义yum源
    fpm制作rpm包
    shell学习(三)
    shell学习(二)
    linux系统下创建lvm挂载到指定目录
    nginx做代理安装docker
    df -h命令卡死解决办法
    docker安装
  • 原文地址:https://www.cnblogs.com/ltl123/p/9097876.html
Copyright © 2011-2022 走看看