2017-2018-2 20165209 实验五《网络编程与安全》实验报告
Posted tutu233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-2018-2 20165209 实验五《网络编程与安全》实验报告相关的知识,希望对你有一定的参考价值。
2017-2018-2 20165209 实验五《网络编程与安全》实验报告
实验报告封面
北京电子科技学院(BESTI)
实 验 报 告
课程:Java程序设计 班级:1652 姓名:陈思兵 学号:20165209
成绩: 指导教师:娄嘉鹏 实验日期:2018年5月28日
实验密级: 预习程度: 实验时间:13:45 - 3:25
仪器组次: 09 必修/选修:必修 实验序号:实验五
实验名称: 网络编程与安全
实验目的:
1.实现中缀表达式转后缀表达式的功能
2.实现客户端与服务器的链接
3.实现后缀表达式计算功能
4.实现输入加密解密
5.实现密钥传递
实验与要求:
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3.严禁抄袭。
实验内容及步骤
(一)网络编程与安全--1
- 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
- 结对实现中缀表达式转后缀表达式的功能 MyBC.java
- 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
- 上传测试代码运行结果截图和码云链接
- 栈
- 中缀和后缀
表达式Exp = S1 + OP + S2
(S1 ,S2是两个操作数,OP为运算符)有三种标识方法:
- OP + S1 + S2 为前缀表示法
- S1 + OP + S2 为中缀表示法
- S1 + S2 + OP 为后缀表示法
例如:Exp = a * b + (c - d / e) * f
- 前缀式: + * a b * - c / d e f
- 中缀式: a * b + c - d / e * f
后缀式: a b * c d e / - f * +
MyDC关键代码
- MyBC关键代码
- 运行结果
(二)网络编程与安全--2
- 结对编程:1人负责客户端,一人负责服务器,注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
- 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 客户端的程序使用Socket类建立负责连接到服务器的套接字对象。
建立连接到服务器的套接字对象:
try{ Socket mysocket=new Socket(“http://192.168.0.78”,1880); } catch(IOException e){ }
与mysocket相关的方法:
getInputStream()获得一个输入流
getOutputStream()获得一个输出流
用getInputStream()得到的输入流接到另一个DataInputStream数据流上
用getOutputStream()得到的输出流接到另一个DataOutputStream数据流上
参考书上第13章代码
- 客户端
Client
关键代码
- 服务器端
Server
关键代码
- 运行结果
网络编程与安全--3
- 加密结对编程:1人负责客户端,一人负责服务器,注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
- 服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 实现AES加密
- 客户端
Client
关键代码
- 服务器端
Server
关键代码
- 运行结果
网络编程与安全--4
- 密钥分发结对编程:1人负责客户端,一人负责服务器,注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 实现DH算法
DH算法中,A可以用自己的密钥和B的公钥按照一定方法生成一个密钥,B也可以用自己的密钥和A的公钥按照一定方法生成一个密钥,由于一些数学规律,这两个密钥完全相同。这样,A和B间就有了一个共同的密钥可以用于各种加密。
编程思路:
Java中KeyAgreement
类实现了密钥协定,它使用init( )
方法传入自己的私钥,使用doPhase( )
方法传入对方的公钥,进而可以使用generateSecret( )
方法生成共享的信息
- 客户端
Client
关键代码
- 服务器端
Server
关键代码
- 运行结果
网络编程与安全--5
- 完整性校验结对编程:1人负责客户端,一人负责服务器,注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- MD5算法思想
- 首先生成对象,执行其
update()
方法可以将原始数据传递给该对象,然后执行其digest( )
方法即可得到消息摘要。
(1) 生成MessageDigest对象
(2) 传入需要计算的字符串
(3) 计算消息摘要
(4) 处理计算结果
- 客户端
Client
关键代码
- 服务器端
Server
关键代码
- 运行结果
PSP(Personal Software Process)时间统计:
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 30min | 9.09% |
设计 | 90min | 18.1% |
代码实现 | 120min | 36.3% |
测试 | 60min | 18.1% |
分析总结 | 30min | 9.09% |
实验感想
本次实验不仅加深了对java数据结构中栈的知识,更巩固了13章的java网络方面的知识。
码云链接
队友博客
参考资料
以上是关于2017-2018-2 20165209 实验五《网络编程与安全》实验报告的主要内容,如果未能解决你的问题,请参考以下文章
20165209 2017-2018-2 《Java程序设计》第7周学习总结
20165209 2017-2018-2 《Java程序设计》第9周学习总结
2017-2018-2 20165331 实验五《网络编程与安全》实验报告
2017-2018-2 20165318 实验五《网络编程与安全》实验报告