• 20172330 2017-2018-2 《程序设计与数据结构》实验五报告


    20172313 2017-2018-2 《程序设计与数据结构》实验五报告
    课程:《程序设计与数据结构》
    班级: 1723
    姓名: 李楠
    学号:20172313
    实验教师:王志强
    实验日期:2018年6月13日
    必修/选修: 必修

    1.实验目的

    实验目的

    1.了解计算机网络基础
    2.掌握Java Socket编程
    3.理解混合密码系统
    4.掌握Java 密码技术相关API的使用

    2. 实验过程及结果

    实验1:
    1.参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
    2.结对实现中缀表达式转后缀表达式的功能 MyBC.java
    3.结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
    4.上传测试代码运行结果截图和码云链接

    • 原理
      表达式Exp = S1 + OP + S2(S1,S2是两个操作数,OP为运算符)有三种标识方法:
      OP + S1 + S2 为前缀表示法
      S1 + OP + S2 为中缀表示法
      S1 + S2 + OP 为后缀表示法
      dc运算符:
      +: 依次弹出w1与w2,将w2+w1压栈。精度为结果值精度
      -: 依次弹出w1与w2,将w2-w1压栈

    依次弹出w1与w2,将w2w1压栈。精度为结果值精度与precision中较大值
    / : 依次弹出w1与w2,将w2/w1压栈。精度为precision
    % : 依次弹出w1与w2,将w2-w2/w1*w1压栈
    实现后缀表达式伪代码:
    设置一个操作数栈,开始栈为空;
    从左到右扫描后缀表达式,遇操作数,进栈;
    若遇运算符,则从栈中退出两个元素,先退出的放到运算符的右边,后退出的放到运算符左边,运算后的结果再进栈,直到后缀表达式扫描完毕。
    由中缀式求得后缀式伪代码:
    设立一个栈,存放运算符,首先栈为空;
    从左到右扫描中缀式,若遇到操作数,直接输出,并输出一个空格作为两个操作数的分隔符;
    若遇到运算符,则与栈顶比较,比栈顶级别高则进栈,否则退出栈顶元素并输出,然后输出一个空格作分隔符;
    若遇到左括号,进栈;若遇到右括号,则一直退栈输出,直到退到左括号止。
    当栈变成空时,输出的结果即为后缀表达式。

    • 截图:

    • 代码链接
      (https://gitee.com/CS-IMIS-23/ln20172330/tree/master/idea/实验5/1)
      实验2:
      结对编程:1人负责客户端,一人负责服务器
      1.注意责任归宿,要会通过测试证明自己没有问题
      2.基于Java Socket实现客户端/服务器功能,传输方式用TCP
      3.客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
      4.服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
      5.客户端显示服务器发送过来的结果
      6.上传测试结果截图和码云链接

    • 截图

    • 代码链接
      (https://gitee.com/CS-IMIS-23/ln20172330/tree/master/idea/实验5/2)

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

    • 截图:

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

    • 截图

    • 代码截图
      (https://gitee.com/CS-IMIS-23/ln20172330/tree/master/idea/实验5/4)
      实验5:
      完整性校验结对编程:1人负责客户端,一人负责服务器
      1.注意责任归宿,要会通过测试证明自己没有问题
      2.基于Java Socket实现客户端/服务器功能,传输方式用TCP
      3.客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
      4.客户端和服务器用DH算法进行3DES或AES算法的密钥交换
      5.服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
      6.客户端显示服务器发送过来的结果
      7.上传测试结果截图和码云链接

    • 截图:

    4.其他

    java结课了,我们回家吧。

    5.参考资料

    《Java 密码学算法》

  • 相关阅读:
    Python之路——内置函数
    Python之路——迭代器与生成器
    Python之路——函数
    Python之路——琐碎知识
    oracle 11g ocp 笔记(17)--rman高级功能
    oracle 11g ocp 笔记(16)--使用rman进行恢复
    oracle 11g ocp 笔记(15)--使用rman进行备份
    oracle 11g ocp 笔记(14)--数据库备份和恢复配置
    oracle 11g ocp 笔记(13)--子查询和集合运算符
    oracle 11g ocp 笔记(12)--sql关联
  • 原文地址:https://www.cnblogs.com/linanlalala/p/9195332.html
Copyright © 2020-2023  润新知