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 密码学算法》

猜你喜欢

转载自www.cnblogs.com/linanlalala/p/9195332.html