2018-2019-2 20175215 实验五《网络编程与安全》实验报告

1、实验内容与步骤

1.任务一:两人一组结对编程。

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

2.任务二:结对编程。

  • 1人负责客户端,一人负责服务器。
      1. 注意责任归宿,要会经过测试证实本身没有问题
      1. 基于Java Socket实现客户端/服务器功能,传输方式用TCP
      1. 客户端让用户输入中缀表达式,而后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式经过网络发送给服务器
      1. 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
      1. 客户端显示服务器发送过来的结果
      1. 上传测试结果截图和码云连接
  • 任务过程
  • 程序代码为:
    • Client.java
    • Server.java
    • MyDC.java
    • MyBC.java
    • 代码详情见码云连接
  • 运行截图
    • 客户端截图
      html

    • 服务器截图
      java

3.任务三:加密结对编程。

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

    • 服务器截图
      算法

注:任务四任务五创建在公钥已由Key_DH.java生成好并传输给对方的前提下开始的。

4.任务四:密钥分发结对编程。

  • 任务要求:1人负责客户端,一人负责服务器
      1. 注意责任归宿,要会经过测试证实本身没有问题
      1. 基于Java Socket实现客户端/服务器功能,传输方式用TCP
      1. 客户端让用户输入中缀表达式,而后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密经过网络把密文发送给服务器
      1. 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
      1. 服务器接收到后缀表达式表达式后,进行解密,而后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
      1. 客户端显示服务器发送过来的结果
      1. 上传测试结果截图和码云连接
  • 任务过程:
  • 程序代码为:
    • Client3.java
    • Server3.java
    • Encoder.java
    • Key_DH.java
    • KeyAgree.java
    • MyDC.java
    • MyBC.java
  • 运行截图:
    • 客户端截图
      编程

    • 服务器截图
      数组

5.任务五:完整性校验结对编程。

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

1.Java 密码学算法
2.20165235 实验五 网络编程与安全
3.Java重写equals方法(重点讲解)测试

相关文章
相关标签/搜索