2017-2018-2 20165215 实验五 网络编程与安全

2017-2018-2 20165215 实验五 网络编程与安全

实验报告封面

实验内容

网络编程与安全-1

1. 任务详情:

两人一组结对编程:

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

2. 相关知识点

  • 算符优先法求解表达式:(生成后缀表达式+后缀表达式求值)

    • 步骤1:建立符号运算的优先级关系表

    • 步骤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密码学部分,在实验过程中,我不仅复习巩固了之前的知识点,还更进一步地掌握了如何将它们融会贯通。

posted @ 2018-05-28 17:41  匪夷所思05  阅读(323)  评论(1编辑  收藏  举报