北京电子科技学院(BESTI)实验报告

课程:Java程序设计

班级:1453

指导教师:娄嘉鹏

实验日期:2016.05.06 18:30-21:30

实验名称:实验五 Java网络编程

实验内容

  • 1.用书上的TCP代码,实现服务器与客户端。

  • 2.客户端与服务器连接

  • 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端

  • 4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文。计算求得明文的Hash函数值,检查是否与传送过来的一致,如果一直,则表示匹配成功。

    实验步骤

实验步骤

本次实验我的小组成员是20145331魏澍琛,我负责编写客户端代码的编写,他负责服务器代码的编写。

  1. 客户端的编程主要由三个步骤实现:建立网络连接、数据交换、关闭网络连接。首先我们要建立连接,在Java API中以java.net.Socket类的对象代表网络连接,所以建立客户端网络连接,也就是创建Socket类型的对象,并找出电脑现在使用的IP地址,如图所示:

  2. 接着利用BufferedReader对象获得从服务器传来的网络输入流,用PrintWriter对象获得从客户端向服务器输出数据的网络输出流,用BufferedReader对象创建键盘输入流,以便客户端从键盘上输入信息。
  3. 由于我们需要进行安全传输,所以在传输过程中还要对数据进行加密,一般来说,采用对称性加密算法与非对称性加密算法结合的方式安全性要更高,因此这里先用的是RSA算法,用服务器的公钥先对DES的密钥进行加密,然后将加密后的密钥传给服务器,接着让用户输入需要传输的明文,再使用DES算法对明文进行加密,将加密后的密文通过网络传到服务器,然后计算明文的Hash值,传送到服务器。服务器总共会收到来自客户端发送的DES的密钥、密文以及明文的Hash值,服务器会采用RSA公钥密码中服务器的私钥解密DES的密钥,接着用解密后的DES的密钥对密文进行解密,得到明文。服务器再将解得的明文计算Hash值,检查其是否与传过来的Hash值一致,如果一致说明匹配成功。
  4. 客户端的代码:

 

实验结果如图所示:

发送:

接收:

实验中遇到的问题及解决过程

  • 一开始运行弹出找不到指定文件的错误:
  • 解决过程:

用了RSA的公钥文件,在拷贝时拷贝错了目录,应该把Skey_RSA_pub.dat文件拷到工程中与src同级的目录下即可。

PSP(Personal Software Process)时间

步骤 耗时 百分比
需求分析 20min 11.1%
设计 30min 16.7%
代码实现 60min 33.3%
测试 40min 22.2%
分析总结 30min 16.7%

总结

这次试验内容比较有意思,我第一次真正实现了,所谓的加密解密的传输,能将所学知识应用在实际还是非常有意义的一件事情。而且本次试验内容有多门学科的交叉,涵盖了密码学、计算机网络以及java的应用。可以更加有助我们对知识的融会贯通。

												

20145301实验五 Java网络编程及安全的更多相关文章

  1. 20145331实验五 Java网络编程及安全

    20145331魏澍琛 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码 ...

  2. 20145213《Java程序设计》实验五Java网络编程及安全

    20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...

  3. 20145206《Java程序设计》实验五Java网络编程及安全

    20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...

  4. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  5. JAVA课程实验报告 实验五 Java网络编程及安全

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  6. 20145225《Java程序设计》 实验五 Java网络编程及安全

    20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...

  7. 20145208 实验五 Java网络编程

    20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  8. 20145215实验五 Java网络编程及安全

    20145215实验五 Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验我的结对编程对象是20145208蔡野,我负责编写客 ...

  9. 20145220 实验五 Java网络编程

    20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

随机推荐

  1. ng2-file-upload上传附件同时传参

    由于业务需要,需要的场景是发某条公告的时候能够上传附件,不只是图片,图片的话可以直接用base64传给后台,但上传附件这个就不能这样干了, 与此同时,每条公告都有一个对应的唯一标识id, 附件以文件流 ...

  2. CH5402 选课【树形DP】【背包】

    5402 选课 0x50「动态规划」例题 描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了 N(N≤300) 门的选修课程,每个学生可选课程的数量 M 是 ...

  3. DataSnap服务器生成的ID自动更新到客户端

    很久没有去动Delphi了,突然兴起做个小程序,一个表的ID,在服务器端的应用服务器上生成,如何刷新到客户端? 查看了TDataSetProvider的Options属性,比以前增加了一个poProp ...

  4. C语言实现单链表(带头节点)

    C语言在实现单链表存储时需要注意的几点: 1.定义结构体,typedef:用于给结构体另命名 // 定义结构体类型 typedef struct Node{ int data; struct Node ...

  5. android开发时程序出现崩溃问题

    原因:项目目录下的:src与gen中的包名不一致时,出现问题 <manifest xmlns:android="http://schemas.android.com/apk/res/a ...

  6. 如何将计算机加入域 分类: AD域 Windows服务 2015-06-10 11:04 63人阅读 评论(0) 收藏

    在上一篇博客中我已经实现了windows server 2008 R2域中的DC部署,那么如何将计算机加入到我们部署的域环境中呢? (初级教程,step by step,不足之处欢迎批评指正!) 将计 ...

  7. golang 中的定时器(timer),更巧妙的处理timeout

    今天看到kite项目中的一段代码,发现挺有意思的. // generateToken returns a JWT token string. Please see the URL for detail ...

  8. Django接收自定义http header(转)

    add by zhj: Django将所有http header(包括你自定义的http header)都放在了HttpRequest.META这个Python标准字典中,当然HttpRequest. ...

  9. qemu进程页表和EPT的同步问题

    背景分析: 在之前分析EPT violation的时候,没有太注意qemu进程页表和EPT的关系,从虚拟机运行过程分析,虚拟机访存使用自身页表和EPT完成地址转换,没有用到qemu进程页表,所以也就想 ...

  10. Celery(一个懂得 异步任务、定时任务、周期任务 的"芹菜")

    一.什么是Celery? Celery 是基于Python实现的模块,用于执行异步.定时.周期任务的,其结构的组成是: - 用户任务 app - 管道 broker 用于存储任务(官方推荐 redis ...