20135333苏正生实验四实验报告


课程:


Java程序设计


班级:


1353


姓名:


苏正生


学号:


2015333


成绩:


指导教师:


娄家鹏


实验日期:


2015.6.9


实验密级:


预习程度:


实验时间:


3:20~5:00


仪器组次:


必修/选修:


必修


实验序号:


实验四


实验名称:

Java网络编程及安全

实验内容:

1.掌握Socket程序的编写;

2.掌握密码技术的使用;

3.设计安全传输系统。


实验仪器:

 


名称


型号


数量


笔记本电脑


Msi GS70

 

 


1

                 

实验准备:

本次实验实行小组两人结对编程,在实验前,我(20135333)与郑伟(20135322)组成小组

分工:苏正生——服务器程序编写调试,以及数据解密、摘要验证

   郑伟——客户端程序编写调试,以及数据的加密,密钥的传递 博客链接:

http://www.cnblogs.com/zhengwei0712/

实验步骤:

1. 基于Java Socket实现安全传输

Socket是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发 TCP/IP网络上的应用程序。

2. 基于TCP实现客户端和服务器,结对编程一人负责客户端,一人负责服务器

服务器:使用ServerSocket监听指定的端口,端口可以随意指定,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。其中,创建绑定端口的服务器进程后, 当客户端进程的 Socket构造方法返回成功, 表示客户进程的连接请求被加入到服务器进程的请求连接队列中. 虽然客户端成功返回 Socket对象, 但是还没跟服务器进程形成一条通信线路. 必须在服务器进程通过 ServerSocket 的 accept() 方法从请求连接队列中取出连接请求, 并返回一个Socket 对象后, 服务器进程这个Socket 对象才与客户端的 Socket 对象形成一条通信线路.

服务器从 Socket 对象中获得输入流和输出流, 就能与客户交换数据. 当服务器正在进行发送数据的操作时, 如果客户端断开了连接, 那么服务器端会抛出一个IOException 的子类 SocketException 异常。

3. 使用Git进行版本控制

4. 选择对称算法进行数据加解密.

本次实验我们小组采用了RSA公钥密码加密算法,相对来说是一种安全性较高的加密方式

5. 选择非对称算法对对称加密密钥进行密钥分发.

KeyGenerator kg=KeyGenerator.getInstance("DESede");
kg.init(168);
SecretKey k=kg.generateKey( );
byte[] ptext2=k.getEncoded();
//String kstr=parseByte2HexStr(kb);

6. 选择MD5算法进行完整性验证.

                        String x=s;
			MessageDigest m2=MessageDigest.getInstance("MD5");
			m2.update(x.getBytes( ));
			byte a[ ]=m2.digest( );
			String result="";
			for (int i=0; i<a.length; i++){
                                result+=Integer.toHexString((0x000000ff & a[i]) |
				0xffffff00).substring(6);
			}
			System.out.println(result);
			out.println(result);

  

        String aline3=in.readLine();
		String x=p;
		MessageDigest m2=MessageDigest.getInstance("MD5");
         m2.update(x.getBytes( ));
         byte a[ ]=m2.digest( );
         String result="";
         for (int i=0; i<a.length; i++){
            result+=Integer.toHexString((0x000000ff & a[i]) |
				0xffffff00).substring(6);
	     }
         System.out.println(result);

		if(aline3.equals(result)){
			System.out.println("匹配成功");

  实验结果:

实验心得体会:

本次程序的关键代码可以参考书上的算法编写。不论是客户端还是服务器,数据流的操作大体上是相同的。同时试验中对于多种密码学密码技术的算法和应用都用代码给出了完整的展示,有利于操作。

此次设计的是服务器与客户端之间进行通信,老师在我们设计之前讲解的很清晰,使得我们大家操作起来比较娴熟。让我感觉到了软件编程的趣味性和实用性,虽说一些技术我们在课堂上也曾学习过,但是大都停留在理论基础上,实际开发很少,而这次实验给了我们一个很好的边学习边实践的机会,对我们深入学习这些技术有很大的帮助,深刻体会到了这些技术的实用性。

通过这次试验,我更加深刻的学习了java编程以及操作,在以后的实验以及实际操作中,我相信我能更好使用java进行java程序的编写,同时对于socke编程和安全传输有了全新的认识。

解决问题所参考资料:

1.socket编程是什么。
http://zhidao.baidu.com/link?url=qdcZMpAjpF0sxJo3Jd2iNCBZfl9QYeN2cbF5WGMvyq3qX-CWSUw1EGKKlmey7kKfinySkUCsQdQ4loJ8JNknk_

2.

浅析MD5算法的原理及应用

wenku.baidu.com/link?url=0oRUXrAx2z7zZlqDiHY56hhevNWwSSFARIJNYwz5X8jlW-TRXHgtlb6frnZY7IdMJSvDM7Tyi5q5GyDaQmTzLpI58GSSBJZphd-tvQif1wG
http://wenku.baidu.com/link?url=0oRUXrAx2z7zZlqDiHY56hhevNWwSSFARIJNYwz5X8jlW-TRXHgtlb6frnZY7IdMJSvDM7Tyi5q5GyDaQmTzLpI58GSSBJZphd-tvQif1wG

3.ServerSocket 用法详解(一) - lin49940的专栏 - 博客频道 - CSDN.NET

http://blog.csdn.net/lin49940/article/details/4398364

时间: 2024-07-31 14:34:50

20135333苏正生实验四实验报告的相关文章

20135333苏正生实验二实验报告

实验报告 课程: Java程序设计 班级: 1353 姓名: 苏正生 学号: 2015333 成绩: 指导教师: 娄家鹏 实验日期: 2015.5.6 实验密级: 预习程度: 实验时间: 3:20~5:00 仪器组次: 必修/选修: 必修 实验序号: 实验二 实验名称: Java面向对象程序设计 实验目的: 1.掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式   实验仪器:   名称 型号 数

20135333苏正生实验三实验报告

课程: Java程序设计 班级: 1353 姓名: 苏正生 学号: 2015333 成绩: 指导教师: 娄家鹏 实验日期: 2015.5.6 实验密级: 预习程度: 实验时间: 3:20~5:00 仪器组次: 必修/选修: 必修 实验序号: 实验三 实验名称: 敏捷开发与XP实践 实验内容: 1. XP基础 2. XP核心实践 3. 相关工具     实验仪器:   名称 型号 数量 笔记本电脑 Msi GS70     1                   实验步骤 (一)敏捷开发与XP 学

2017-2018-1 20162306 实验四 实验报告

2017-2018-1 20162306 实验四 实验报告 实验三:查找与排序-1 实验要求: 完成教材P302 Searching.Java ,P305 Sorting.java中方法的测试 不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位 提交运行结果图(可多张) 实验过程: 1.对之前的测试代码进行修改,增加测试用例个数 2.修改排序方法,实现逆序 代码如下: public static void nSort(Comparable

20145321 实验四实验报告

20145321 实验三实验报告 实验内容 使用android studio实现helloworld以及加入自己的名字. 实验步骤 Android Studio的安装包并进行安装. 设置SDK: 新建项目 编辑文字 PSP 步骤 耗时 百分比 需求分析 20 18% 设计 30 28% 代码实现 20 18% 测试 20 18% 分析总结 20 18%

实验四实验报 告

实验四 北京电子科技学院(BESTI) 实     验    报     告 课程:深入理解计算机系统        班级:1353 姓名:魏静静 文艺 刘虹辰 学号:20135302 20135331 20135325 成绩:             指导教师:娄嘉鹏  实验日期:2015-11-17 实验密级:         预习程度:          实验时间:15:30-18:00 仪器组次:桌号44    必修/选修:必修  实验序号:4 实验名称:简单嵌入式WEB服务器实验 实验

实验四实验报告

北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础             班级:201352 姓名:池彬宁 贺邦 学号:20135212 20135208 成绩:             指导教师:娄嘉鹏       实验日期:2015.12.1 实验密级:         预习程度:           实验时间:15:30-17:30 仪器组次:         必修/选修:必修          实验序号:3 实验名称:基于 S3C2410 的 linux 开发环境的配

2017-2018-2 20165228 实验四《Android程序设计》实验报告

一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:苏祚堃 学号:20165228 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 3:25 实验序号:实验四 实验名称:Android程序设计 实验要求: 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决

2017-2018-2 20165336 实验四《Android开发基础》实验报告

20165336 实验四 Android程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 15:25 实验序号:实验四 实验名称:Android程序设计 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到

20165302实验四报告

20165302实验四实验报告 提交点1 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Stuidio 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分 学习Android Stuidio调试应用程序 截图 提交点2 构建项目,运行教材相关代码 创建 ThirdActivit