• 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/

    三、实验体会

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

  • 相关阅读:
    linux 权限管理命令
    大三上学期总结
    C# 读写Excel的一些方法,Aspose.Cells.dll
    Topshelf 创建.net服务整理和安装步骤(转)
    你必须知道的.NET之特性和属性(转)
    用SQL语句删除一个数据库的所有表和所有存储过程
    System.DllNotFoundException: 无法加载 DLL“FileTracker.dll”: 动态链接库(DLL)初始化例
    关于消息队列的使用[转]
    PhpStorm使用技巧小结
    转载]C#实现获取浏览器信息
  • 原文地址:https://www.cnblogs.com/baka/p/4570539.html
Copyright © 2020-2023  润新知