Java实验报告五:Java网络编程及安全
Java实验报告五:Java网络编程及安全
20135315 宋宸宁
一、实验内容
1.掌握Socket程序的编写;
2.掌握密码技术的使用;
3.设计安全传输系统。
二、实验步骤
1. 基于Java Socket实现安全传输
2. 基于TCP实现客户端和服务器,结对编程一人负责客户端,一人负责服务器
3. 使用Git进行版本控制
4. 选择对称算法进行数据加解密.
5. 选择非对称算法对对称加密密钥进行密钥分发.
6. 选择合适的Hash算法进行完整性验证.
7. 选择合适的算法对Hash值进行签名/验证.
三、设计思路
我的结队伙伴是芦畅:http://www.cnblogs.com/bonjourvivi/p/4565004.html
1.我负责的是服务器的部分,在客户端Client程序中输入明文“Hello World!”然后利用随机秘钥发生器产生DES秘钥,经过秘钥扩展,将扩展秘钥应用IO流存入文件keykb1.dat中,并打印输出扩展秘钥。

String s="Hello World!";
KeyGenerator kg=KeyGenerator.getInstance("DESede");
kg.init(168);
SecretKey k=kg.generateKey( );
byte[ ] kb=k.getEncoded( );
FileOutputStream fk=new FileOutputStream("keykb1.dat");
fk.write(kb);
for(int i=0;i<kb.length;i++){
System.out.print(kb[i]+",");//打印扩展秘钥
}

2.将明文加密,并将密文以UTF8编码方式打印出来

Cipher cp=Cipher.getInstance("DESede");
cp.init(Cipher.ENCRYPT_MODE, k);
byte ptext[]=s.getBytes("UTF8");
for(int i=0;i<ptext.length;i++){
System.out.print(ptext[i]+",");
}
System.out.println("");
byte ctext[]=cp.doFinal(ptext);
for(int i=0;i<ctext.length;i++){
System.out.print(ctext[i] +",");
}

3.传递密文给服务器
FileOutputStream f2=new FileOutputStream("SEnc.dat");
f2.write(ctext);
4.客户端利用服务器的公开密钥,将密钥加密传递给服务器

FileInputStream f=new FileInputStream("Skey_RSA_pub.dat");
ObjectInputStream b=new ObjectInputStream(f);
RSAPublicKey pbk=(RSAPublicKey)b.readObject( );
BigInteger e=pbk.getPublicExponent();
BigInteger n=pbk.getModulus();
System.out.println("e= "+e);
System.out.println("n= "+n);
byte ptext1[]=s.getBytes("UTF8");
BigInteger m=new BigInteger(ptext1);
BigInteger c=m.modPow(e,n);
System.out.println("c= "+c);
String cs=c.toString( );
BufferedWriter out1=
new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("Enc_RSA.dat")));
out1.write(cs,0,cs.length( ));
out1.close( );

9.客户端用hash函数给明文加密,将明文的哈希值通过IO流传递给密文
String x=s; MessageDigest md5=MessageDigest.getInstance("MD5");
md5.update(x.getBytes( ));
byte smd5[ ]=md5.digest( );
String result="";
for (int i=0; i<smd5.length; i++){
result+=Integer.toHexString((0x000000ff & smd5[i]) |
0xffffff00).substring(6);
}
System.out.println(result);
out.println(result);
四、实验结果
客户端

五、遇到的问题
两个人进行测试时,服务器与客户端已成功连接,但是服务器不显示结果,当自己相连时,会出现服务器结果,但是会被客户端结果覆盖,但可以快速截图截下结果,且结果正确。
六、解决办法
在一台电脑上实现数据的加解密传输。
七、统计时间
|
步骤 |
耗时 |
百分比 |
|
需求分析 |
3h |
27.3% |
|
设计 |
1h | 9.1% |
|
代码实现 |
2h | 18.2% |
|
测试 |
4h | 36.4% |
|
分析总结 |
1h | 9.1% |
Java实验报告五:Java网络编程及安全的更多相关文章
- 20145221 《Java程序设计》实验报告五:网络编程及安全
20145221 <Java程序设计>实验报告五:网络编程及安全 实验要求 掌握Socket程序的编写 运行TCP代码包,结对进行,一人服务器,一人客户端 掌握密码技术的使用 利用加解密代 ...
- 20145211 《Java程序设计》实验报告五————Java网络编程及安全实验报告
实验内容 1.掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 这一部分是与我的partner合作的,详见他的博客- [20145326 <Java程序设计> ...
- java实验报告五
一.实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 二.实验基础: IP和端口:IP是用来标示计算机,而端口是用来标示某个计算机上面的特定应用.至于它们的 ...
- 20145207《Java程序设计》实验五(网络编程与安全)实验报告
<Java 程序设计>实验五(网络编程与安全)实验报告 目录 改变 网络编程与安全实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.不过这篇博客我只能做到写 ...
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- 20155205《Java程序设计》实验五(网络编程与安全)实验报告
20155205 <Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 (一) 两人一组结对编程 参考http://www.cnblogs.com/rocedu/p/6 ...
- 20165230 《Java程序设计》实验五《网络编程与安全》实验报告
20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...
- 20155218 《Java程序设计》实验五(网络编程与安全)实验报告
20155218 <Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 (一) 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面 ...
- 20155236 《Java程序设计》实验五(网络编程与安全)实验报告
20155236 <Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 任务一: 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上 ...
随机推荐
- Hark的数据结构与算法练习之梳排序
算法说明梳排序是交换排序的一种,它其实也是改自冒泡排序,不同之处是冒泡排序的比较步长恒定为1,而梳排序的比较步长是变化的. 步长需要循环以数组长度除以1.3,到最后大于等于1即可. 光说可能比较抽象, ...
- Linux常用命令_(网络管理)
网络信息:hostname.netstat.route.ifconfig网络配置:netconfig网络测试:ping hostname–查看主机名称ifconfig–查看和设置网络配置–ifconf ...
- Kali Linux 2016.2发布提供虚拟机以及系统镜像下载
Kali Linux 2016.2发布提供虚拟机以及系统镜像下载 Kali Linux 2016.2发布提供虚拟机以及系统镜像下载,本次Kali Linux 2016.2提供了五种桌面模式,分别为 ...
- Eclipse启动Tomcat时45秒超时的解决方法
Eclipse启动Tomcat时,默认配置的启动超时时长为45秒.假若项目需要加载的东西比较多,启动时间会比较久,如果启动超过45秒将会报错.有两种解决途径,方法只有一个,就是修改启动时间. 1. 修 ...
- DelPhi学习网站
http://www.2ccc.com/downloads.asp?subcatalogid=101&pageid=14 http://www.2ccc.com/ http://www.xue ...
- JSON转换为数组 但读取JSON的顺序目前没法保证
var json = {a : 1, b : 2, c: 3}; var jsonArr = []; for (i in json){ var wrap = []; wrap[0] = i; wrap ...
- Java读取txt文件
package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...
- git 用Gitk /usr/bin/which: no wish
/usr/bin/which: no wish 安装yum -y install tcl 和yum -y install tk 显示所有的分支 $gitk --all 显示所有的分支 $gitk -- ...
- [转]IE11下Forms身份认证无法保存Cookie的问题
本文转自:http://www.cnblogs.com/jaxu/p/3698377.html ASP.NET中使用Forms身份认证常见的做法如下: 1. 网站根目录下的Web.config添加au ...
- jquery修改a标签的href链接和文字
可以先体验一下效果:http://keleyi.com/keleyi/phtml/jquery/2.htm 以下修改a标签的href链接和修改文字的代码: <script type=" ...