博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA第四次实验
阅读量:6616 次
发布时间:2019-06-24

本文共 2889 字,大约阅读时间需要 9 分钟。

                                                      实     验    报     告

      课程:Java   班级: 1352    姓名:黄坤    学号:20135226

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

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

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

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

      实验目的与要求: 

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

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

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

      实验仪器:

名称

型号

数量

计算机

 

2

     

 

     

 

实验内容:

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

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

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

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

5       其他安全措施

 

相关代码

客户端:

package net;

import java.math.*;

import java.net.*;

import java.io.*;

 

public class tcpused {

 

    public static void main(String srgs[]) {

        try {

            //创建连接特定服务器的指定端口的Socket对象

            Socket socket = new Socket("10.0.6.143", 2224);

            //获得从服务器端来的网络输入流

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

            //获得从客户端向服务器端输出数据的网络输出W流

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

            //创建键盘输入流,以便客户端从键盘上输入信息eredWriter(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 t=Read.read();

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

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

            String result = DigestCalc.hash(s);

 

            out.println(ck);

            out.println(cs);  //通过网络传送到服务器

            out.println(result);

 

 

        } catch (Exception e) {

            System.out.println(e);

        } finally {

            //stdin.close();

            //in.close();

            //out.close();

            //socket.close();                  

        }

    }

}

服务器:

package net;

import java.net.*;

import java.io.*;

 

public class tcpuse {

 

    public static void main(String srgs[]) throws Exception {

        ServerSocket sc = null;

        Socket socket = null;

        try {

            sc = new ServerSocket(2224);//创建服务器套接字

            System.out.println("端口号:" + sc.getLocalPort());

            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 key = in.readLine();

            System.out.println("从客户端收到的加密秘钥为:" + key);

            byte[] keykb = new Dec_RSA().Dec(key);

            String ctext = in.readLine();//读取客户端传送来的数据

            System.out.println("从客户端收到的密文为:" + ctext);

            String result=SDec.des(ctext, keykb);

            String ha = in.readLine();

 

            String sa = DigestCalc.hash(result);

            boolean q = Compare.compare(sa, ha);

            System.out.println("程序是否完整:" + q);

            out.close();

            in.close();

            sc.close();

        } catch (Exception e) {

            System.out.println(e);

        }

    }

}

客户端:

 

 

服务端:

链接查看

统计时间

 

步骤

耗时(min)

百分比

需求分析

10

10%

设计

20

20%

代码实现

40

40%

测试

10

10%

分析总结

20

20%

 

 

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

在创建服务器后,客户端无法链接而出现的拒绝访问

解决方法:调整端点名保持一样

 

实验人员:

服务器 :20135226 黄坤

客户端  :20135326王亦可  http://www.cnblogs.com/baka/

三、实验体会

  本次试验遇到一些困难,特别是编程方面,其他的都还好

转载于:https://www.cnblogs.com/kryst4l/p/4570525.html

你可能感兴趣的文章
Oracle中REGEXP_SUBSTR函数
查看>>
Xamarin.Android开发实践(十三)
查看>>
如果你建造了一个精良的模型却没人用,你肯定不会得到赞誉(转)
查看>>
Bootstrap<基础三> 排版
查看>>
【Cocos2d-x】开发基础-Cocos简介与环境搭建
查看>>
SQL查询性能分析
查看>>
Json——js和C#对Json的操作
查看>>
oracle 包,函数,过程,块的创建和执行及在java中执行(转)
查看>>
CloudDBA现场助力双十一
查看>>
Finding awesome developers in programming interviews(转)
查看>>
虚拟现实技术或会产生副作用
查看>>
[Spring Boot 系列] 集成maven和Spring boot的profile 专题
查看>>
【云图】如何设置微信里的全国实体店地图?
查看>>
ZOJ(ZJU) 1002 Fire Net(深搜)
查看>>
专访三桐:阿里人工智能搜索应用的交互式未来
查看>>
Android零基础入门第4节:正确安装和配置JDK, 高富帅养成第一招
查看>>
京东众筹上线仅2天完成目标 可编程机器人HEXA降低机器人开发门槛
查看>>
db file async I/O submit 等待事件优化
查看>>
前端需要了解的 SSO 与 CAS 知识
查看>>
李开复谈未来工作:虽然会被AI取代,但谁说人类非得工作不可?
查看>>