2017-2018-2 20165215 实验五 网络编程与安全
实验报告封面

实验内容
网络编程与安全-1
1. 任务详情:html
两人一组结对编程:java
- 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
- 结对实现中缀表达式转后缀表达式的功能 MyBC.java
- 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
- 上传测试代码运行结果截图和码云连接
2. 相关知识点git
- 算符优先法求解表达式:(生成后缀表达式+后缀表达式求值)

- 步骤2
- 设操做数栈OPND,置空;运算符栈OPTR,最低符号#压进OPTR;
- 读入字符C,C如果操做数, 进OPND;如果运算符,与OPTR栈顶元素(A)比较,根据算符优先级,决定如何处理:
- A<C, C压入OPTR栈;
- A=C, A从OPTR出栈;
- A>C,A出栈,从OPND依次弹出两个操做数y、x, 计算Z=x A y,Z压入OPND栈。C压进OPTR.
- 重复上一步,直至表达式结束。
3. 实验截图算法


4. 码云连接编程
网络编程与安全-2
1. 任务详情:数组
结对编程:1人负责客户端,一人负责服务器安全
- 注意责任归宿,要会经过测试证实本身没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,而后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式经过网络发送给服务器
- 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 上传测试结果截图和码云连接
2. 相关知识点服务器
- 当两个程序须要通讯时,它们能够经过使用Socket类创建套接字对象并链接在一块儿(端口号和IP地址的组合得出一个网络套接字)
- Socket类的构造方法为Socket(String host, int port),参数host是服务器的IP地址,port是端口号
- ServerSocket 的构造方法是 ServerSocket(int port),port 是一个端口号
- 可使用方法accept()将客户端的套接字和服务器端的套接字链接起来
- 从套接字链接中读取数据与从文件中读取数据有着很大的不一样,从文件中读取数据时,全部的数据都已经在文件中了,而使用套接字链接时,可能在另外一端数据发送以前,就已经开始读取了
- 注意accept方法也会阻塞线程的执行,直到接收到客户的呼叫
3. 实验截图网络


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


4. 码云连接
网络编程与安全-4
1. 任务详情:
密钥分发结对编程:1人负责客户端,一人负责服务器
- 注意责任归宿,要会经过测试证实本身没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,而后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密经过网络把密文发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,而后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 上传测试结果截图和码云连接
2. 参考资料
密钥交换算法DH(Java实现)
3. 实验截图


4. 码云连接
网络编程与安全-5
1. 任务详情:
完整性校验结对编程:1人负责客户端,一人负责服务器
- 注意责任归宿,要会经过测试证实本身没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,而后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密经过网络把密文和明文的MD5値发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
-上传测试结果截图和码云连接
2. 参考资料
Java 密码学算法
3. 实验截图


4. 码云连接
PSP(Personal Software Process)时间统计:
需求分析 |
30min |
9.09% |
设计 |
90min |
18.1% |
代码实现 |
120min |
36.3% |
测试 |
60min |
18.1% |
分析总结 |
30min |
9.09% |
实验小结
本次实验大量运用到以前的知识,特别是教材第十三章《Java网络编程》与Java密码学部分,在实验过程当中,我不只复习巩固了以前的知识点,还更进一步地掌握了如何将它们融会贯通。