JAVA第四次实验

第4次实验

                                                      实     验    报     告

      课程:Java   班级: 1353    姓名:王亦可   学号:20135326

      成绩:               指导教师:娄嘉鹏        实验日期: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/

三、实验体会

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

posted @ 2015-06-11 23:39  20135326王亦可  阅读(158)  评论(0编辑  收藏  举报