Java第四次实验报告

                                                     北京电子科技学院(BESTI)

                     实     验    报     告

      课程:Java   班级: 1353     姓名:郭皓    学号:20135327

      成绩:               指导教师:娄嘉鹏        实验日期:2015.6.9

      实验密级:           预习程度:              实验时间:15:30~18:00

      仪器组次:20         必修/选修:选修        实验序号:04

      实验名称: 网络编程与安全                                                        

      实验目的与要求:  

           1.掌握Java网络编程的方法;

         2.掌握Java安全编程的方法;

         3.能综合使用各种技术。                                                

      实验仪器:

名称

型号

数量

Lenovo

 V480

1

 Lenovo  YOga 13 1

 

      统计的PSP(Personal Software Process)时间

 

步骤

耗时(min)

百分比

需求分析

10

4.17%

设计

60

25%

代码实现

120

50%

测试

30

12.5%

分析总结

20

 8.33%

 

 

 

一、    实验内容与步骤

实验人员:

客户端  :20135327 郭皓  

服务器  :20135329 李海空 http://www.cnblogs.com/haikong/

实验内容:

1       编写网络通信程序(基于TCP)

2       对通信内容使用对称DES加密算法进行加密

3       使用非对称算法分发对称加密中使用的密钥

4       对通信内容进行摘要计算并验证

5       其他安全措施

 

实验步骤:

1.客户端对信息进行DES加密(使用RSA公钥加密DES密钥)

2.服务器接受信息并解密(使用RSA私钥)

3.验证信息完整性

 

实验代码:

import java.math.*;

import java.net.*;
import java.security.Key;

import java.io.*;

import javax.crypto.Cipher;

 

public class Client {

 

public static void main(String srgs[]) {

try {

Socket socket = new Socket("172.30.113.2", 4421);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));


PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输发送的数据:");

String s = stdin.readLine();

String cs = new SEnc().Enc(s);

System.out.println("发送到服务器的密文为:" + cs);


String ck = new Enc_RSA().Enc(s);

System.out.println("发送到服务器的加密秘钥为:" + ck);

String result = DigestCalc.hash(s);

System.out.println("MD5:" + result);

 

out.println(ck);

out.println(cs);

out.println(result);

 

} catch (Exception e) {

System.out.println(e);

} finally {

 

}

}

}

 

实验截图:

 

 

二、实验中遇到的问题及其解决方法

1.发送经过DES加密后的密文时采用的是将其转化为字符串的方式,在这里客户端采用的是toString()函数,服务器采用的是getBytes()函数,传输后的密文出现错误。最后进过讨论使用了二进制转十六进制输出密文。代码如下:

public static String bytesToHexString(byte[] src){
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}

2.两台电脑一直无法联通

在实验室时我们起初是从寝室局域网上用自己的IPv4地址,然后显示连接超时。

我们认为可能是两台电脑没有在同一个网络里而不发链接成功,尝试着用一台电脑连接网络然后wifi给另一台电脑使用,然后再次连接两台电脑,终于连通成功了。

并不知道为什么,可能是因为局域网的原因吧!

转载于:https://www.cnblogs.com/20135327leme/p/4570636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值