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

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

                                                      实     验    报     告

      课程:Java   班级: 1352     姓名:陈实    学号:20135224

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

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

      仪器组次:24         必修/选修:选修        实验序号: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%

 

 

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

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

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

 

实验人员:

服务器 :20135224 陈实

客户端  :20135227胡御风  http://www.cnblogs.com/huyufeng/

三、实验体会

    本次实验难度相当大,很多问题没有得到及时的解决,浪费了大量的人力物力,比如TCP的使用在书上提供的内容完全无法及时解决无法链接的问题,在后面的代码中,虽然老师几经给出相应的加密代码但运用起来后实现与网络的传送还需要一定的调试。不过通过这次实验极大提高对代码的使用性以及相应的编写技巧。

转载于:https://www.cnblogs.com/chuishi/p/4570483.html

你可能感兴趣的文章
GDB调试多进程程序
查看>>
组合数
查看>>
CMD批处理延时启动的几个方法
查看>>
转:LoadRunner中web_custom_request 和 web_submit_data的差别
查看>>
HTC G7直刷MIUI开启A2SD+亲测教程
查看>>
shiro的rememberMe不生效
查看>>
const 不兼容的类型限定符问题
查看>>
OpenCV的配置
查看>>
spring Cache + Redis 开发数据字典以及自定义标签
查看>>
成功连上数据库顿感世界美好许多
查看>>
编程注意2
查看>>
《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
查看>>
javascript中sort()排序方法总结
查看>>
实现聊天界面的代码
查看>>
自己生成一个NDK的浅析
查看>>
Excel数据导入到数据库
查看>>
jQuery最佳实践
查看>>
SELinux FAQ
查看>>
Java中synchronized同步的理解
查看>>
python 数值计算库
查看>>