北京电子科技学院(BESTI)

实 验 报 告

课程:程序设计与数据结构
班级: 1623
姓名: 石亚鑫
学号:20162303

成绩: 2分
指导教师:娄嘉鹏 王志强
实验日期:6月9日

实验密级: 非密级
预习程度: 已预习
实验时间:10:10-12:00

必修/选修: 必修
实验序号: cs_03

实验内容

一、两人一组结对编程:

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

二、结对编程:1人负责客户端,一人负责服务器

  • 注意责任归宿,要会通过测试证明自己没有问题
  • 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  • 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
  • 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  • 客户端显示服务器发送过来的结果
  • 上传测试结果截图和码云链接

三、加密结对编程:1人负责客户端,一人负责服务器

  • 注意责任归宿,要会通过测试证明自己没有问题
  • 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  • 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
  • 服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  • 客户端显示服务器发送过来的结果
  • 上传测试结果截图和码云链接

四、密钥分发结对编程:1人负责客户端,一人负责服务器

  • 注意责任归宿,要会通过测试证明自己没有问题
  • 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  • 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
  • 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
  • 服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  • 客户端显示服务器发送过来的结果
  • 上传测试结果截图和码云链接

五、完整性校验结对编程:1人负责客户端,一人负责服务器

  • 注意责任归宿,要会通过测试证明自己没有问题
  • 基于Java Socket实现客户端/服务器功能,传输方式用TCP
  • 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
  • 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
  • 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
  • 客户端显示服务器发送过来的结果
  • 上传测试结果截图和码云链接

实验步骤

(1) 实验一

MyBC在前几周的四则运算就基本完成,所以只要稍修改就好了

(2) 实验二

我负责的是服务器部分,关键代码部分如下:
其中服务器接收到客户端传输的后缀表达式,调用MyDC后缀表达式求值,并把结果传输给客户端。

        try {MyDC evaluator = new MyDC();sc= new ServerSocket(1428);System.out.println("服务器已经启动");socket = sc.accept();   //等待客户端连接System.out.println("成功连接了!!!");BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);String line=in.readLine();System.out.println("从客户端接收到信息为:"+line);int result = evaluator.evaluate(line);out.println("结果为:" + result);out.close();in.close();sc.close();} catch (Exception e) 

(3) 实验三

利用实验三产生的密钥作为公钥,关键代码如下:

        String line = in.readLine();BigInteger cipher = new BigInteger(line);FileInputStream f = new FileInputStream("Skey_RSA_priv.dat");ObjectInputStream b = new ObjectInputStream(f);RSAPrivateKey prk = (RSAPrivateKey) b.readObject();byte[] ctext = parseHexStr2Byte(readline);Key k = new SecretKeySpec(keykb,"DESede");Cipher cp = Cipher.getInstance("DESede");cp.init(Cipher.DECRYPT_MODE, k);

(4) 实验四

(5) 实验五

步骤 耗时 百分比
需求分析 90min 16.7%
代码实现 240min 44.4%
测试 150min 27.8%
分析总结 60min 11.1%

实验总结与体会

这次实验总体来说还是有点艰难,但是还好没出现什么重大的问题。这次实验大部分的内容都在结对编程中的四则运算中完成了,所以基本框架都形成了。和结对的小伙伴合作的也十分愉快,互相修改bug,互相讨论思路。

转载于:https://www.cnblogs.com/syx390234975/p/6985215.html

20162303 实验五 网络编程与安全相关推荐

  1. java 网络实验_Java实验五网络编程与安全

    实验五 网络编程与安全 实验准备 活动一 两人一组结对编程: 0. 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 1. 结对实现中缀表达式 ...

  2. 20165201 实验五 网络编程与安全

    ##20165201 实验五 网络编程与安全 网络编程与安全-1 实验目的与要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#S ...

  3. 2017-2018-2 20165329 实验五 网络编程与安全

    2017-2018-2 20165329 实验五 网络编程与安全 实验报告封面 课程:Java程序设计 班级:1653班 姓名:何佳伟 学号:20165329 指导教师:娄嘉鹏 实验日期:2018年5 ...

  4. #20175201 实验五 网络编程与安全

    一.实验五 网络编程与安全-1 1.实验要求: 两人一组结对编程: (1)参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA : (2)结对实现 ...

  5. 实验五 网络编程与安全-----实验报告

    一.实验五 网络编程与安全-1 1.实验要求: 两人一组结对编程: (1)参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA : (2)结对实现 ...

  6. java小球碰撞实验报告_20155317 《Java程序设计》实验五网络编程与安全实验报告...

    20155317 <Java程序设计>实验五网络编程与安全实验报告 遇到问题 在刚开始启动客户端或者服务端时,出现了一系列的错误情况,总是提示异常信息 后来经过询问同学,反应将端口号修改一 ...

  7. 2016-2017-2 20155322 实验五 网络编程与安全

    2016-2017-2 20155322 实验五 网络编程与安全 目录 1. 目录 1.1 实践一 1.2 实践二 1.3 实践二 1.4 实践二 1.5 实践二 2.实验心得与体会 3.PSP(Pe ...

  8. 实验五 网络编程与安全

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:高君天 学号:20165319 指导教师:娄嘉鹏 实验日期:2018年5月28日 实验时间:13:45 - 3:25 实验序号:实验五 ...

  9. 20155207 实验五 网络编程与安全

    20155207 实验五 网络编程与安全 实验内容 任务一 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现中缀 ...

最新文章

  1. 【Java基础】基本类型与运算
  2. 今天收到IBM cat 测试
  3. clover写入efi_2014 黑苹果折腾之clover efi全新安装
  4. Queue接口中add()与offer(),remove()与poll(),element()与peek()方法区别
  5. logback基础配置文件
  6. VC++、MFC、COM和ATL的区别
  7. LeetCode 732. 我的日程安排表 III(差分思想)
  8. 虚拟服务器新建桌面池,VMware vSphere 服务器虚拟化之二十三 桌面虚拟化之建立手动虚拟桌面池...
  9. ZOJ-2364 Data Transmission 分层图阻塞流 Dinic+贪心预流
  10. 更改桌面壁纸_使用DeskSlide轻松更改桌面墙纸
  11. 【ESG】Aggregate Confusion: The Divergence of ESG Ratings
  12. Node.js 包管理器 ied
  13. 抖音SEO优化:最详细抖音视频SEO教程
  14. Vulkan_Shader_Day06—光照(多光源_Multiple lights)
  15. ROS2可视化利器---Foxglove Studio
  16. 安装MongoDB出现service MongoDB failed to start,verify that you have sufficient privileges to start syste
  17. python3中使用requests库出现的编码问题
  18. moment获取时间
  19. G端产品如何进行需求调研
  20. 小黄鸡的秃头日记【JAVA】---运算符

热门文章

  1. 菜鸟的MySQL学习笔记(三)
  2. 询问任意区间的min,max,gcd,lcm,sum,xor,or,and
  3. UVa 12206 (字符串哈希) Stammering Aliens
  4. HDU-2553-N皇后问题
  5. Purus系统常见使用问题及解决方式FAQ 1
  6. JavaScript学习(七十二)—严格模式
  7. css 动态rem_HTML + CSS 为何得不到编程界的认可?
  8. python%20是什么运算
  9. 你生孩子的时候有什么神奇的经历吗?
  10. 厉精图治的拼音及解释