2018-2019-2 20175215 实验五《网络编程与安全》实验报告
一、实验内容与步骤
1.任务一:两人一组结对编程。
-
任务要求:
-
- 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
-
- 结对实现中缀表达式转后缀表达式的功能
MyBC.java
- 结对实现中缀表达式转后缀表达式的功能
-
- 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用
MyDC.java
- 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用
-
- 上传测试代码运行结果截图和码云链接
-
-
任务过程
-
程序代码为:
MyDC.java
MyBC.java
- 代码详情见码云链接
-
任务截图:
2.任务二:结对编程。
-
1人负责客户端,一人负责服务器。
-
- 注意责任归宿,要会通过测试证明自己没有问题
-
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
-
- 客户端让用户输入中缀表达式,然后把中缀表达式调用
MyBC.java
的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
- 客户端让用户输入中缀表达式,然后把中缀表达式调用
-
- 服务器接收到后缀表达式,调用
MyDC.java
的功能计算后缀表达式的值,把结果发送给客户端
- 服务器接收到后缀表达式,调用
-
- 客户端显示服务器发送过来的结果
-
- 上传测试结果截图和码云链接
-
-
任务过程
-
程序代码为:
Client.java
Server.java
MyDC.java
MyBC.java
- 代码详情见码云链接
-
运行截图
-
客户端截图
-
服务器截图
-
3.任务三:加密结对编程。
-
任务要求:1人负责客户端,一人负责服务器
-
- 注意责任归宿,要会通过测试证明自己没有问题
-
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
-
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
-
- 服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
-
- 客户端显示服务器发送过来的结果
-
- 上传测试结果截图和码云链接
-
-
任务过程:
-
程序代码为:
Server2.java
Client2.java
Encoder.java
Skey_AES.java
MyDC.java
MyBC.java
- 代码详情见码云链接
-
运行截图
-
客户端截图
-
服务器截图
-
注:任务四任务五建立在公钥已由Key_DH.java
生成好并传输给对方的前提下开始的。
4.任务四:密钥分发结对编程。
-
任务要求:1人负责客户端,一人负责服务器
-
- 注意责任归宿,要会通过测试证明自己没有问题
-
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
-
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
-
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
-
- 服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
-
- 客户端显示服务器发送过来的结果
-
- 上传测试结果截图和码云链接
-
-
任务过程:
-
程序代码为:
Client3.java
Server3.java
Encoder.java
Key_DH.java
KeyAgree.java
MyDC.java
MyBC.java
-
运行截图:
-
客户端截图
-
服务器截图
-
5.任务五:完整性校验结对编程。
-
任务要求:1人负责客户端,一人负责服务器
-
- 注意责任归宿,要会通过测试证明自己没有问题
-
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
-
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
-
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
-
- 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
-
- 客户端显示服务器发送过来的结果
-
- 上传测试结果截图和码云链接
-
-
任务过程:
-
程序代码为:
Client4.java
Server4.java
Encoder.java
DigestPass.java
(将老师所给的代码DigestPass.java
进行相应的修改,使其能够比较生成的消息摘要是否相同。)Key_DH.java
KeyAgree.java
-
运行截图:
-
客户端截图
-
服务器截图
-
SP.码云链接
SP2.实验中碰到的问题
1.结对伙伴使用jdk包版本不对的问题
- 问题:导入以下两个包出现错误
- 问题解决:使用jdk包版本不对
结对伙伴使用的是jdk11,而这两个包是jdk8中的,因此出现上图错误。
2.传输的被加密的密钥与解密后原密钥不对的问题
- 问题:传输密钥画蛇添足的使用以下代码之后传输,而不是直接使用
key1
(String)
String keyone= new String (a1);
keyone = Encoder.AESEncode(sharekey,keyone);//客户端对密钥进行DH加密
导致下图的问题
- 问题解决:使用原来的密钥加密后直接传输(主要问题在于新建的密钥字符串相比于原来的密钥少了一个空格)
SP3.参考资料
好运永远只留给努力奋斗的人