淮阴工学院网络编程报告实验六

阅读: 评论:0

   
淮阴工学院
网络编程实验报告
项目名称:
实验六
学    院:兰州经典一日游
计算机与软件工程学院
班    级:
学    号:
学生姓名:
指导老师:
张秀芳
  学年学期:      2020 ~ 2021 学年 第 1  学期   
       
2020年  11 月  162021年春节闹鬼

一、实验目的
1、理解掌握非对称加密算法与对称加密算法的异同;
2上海十大游乐园、理解掌握安全登录的步骤与编程方法;
3、理解掌握安全注册的步骤与编程方法。
二、实验内容
1、进一步提高登录安全。为保障用户登录安全,采取了将用户密码用SHA-256算法加密传输的方式。
2、完成用户安全注册模块。用户单击“注册”按钮后,弹出注册界面对话框,填入必需的信
息后,完成注册,给出注册的结果提示。
三、工作原理
SSL/TLS协议可以有效防范网络数据交换过程中的攻击。SSL/TLS协议的基本原理是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。公钥加密需要解决两个重要问题:
(1)保证公钥不被篡改。解决方法:通常将公钥放在数字证书中,只要证书是可信的,公钥就是可信的。
(2)公钥加密计算量太大,不适合加密大数据量内容。解决方法:每一次对话,客户端生成一个对称密钥,用对称密钥加密,运算速度会非常快。再用服务器公钥加密对称密钥,客户机将数据和加密的密钥一起发送给服务器。
原理图
四、运行结果
1、首先运行服务器程序,单击初始界面上的“启动服务器”按钮,服务器运行状态如图3.1所示。此时服务器工作与localhost主机的5杭州自由行五日游攻略0000端口,根据监控面板的提示,服务器此时处于侦听状态,等待新客户机的到来。
图3.1 服务器启动后的初始页面
2、下面启动客户机程序,在登录对话框中输入用户账号50000,输入密码123456,单击“登录”按钮,登录成功后的界面如图3.2所示。
图3.2 账号50000登录页面
用未注册的账号进行登录,服务器端并不到数据库查和验证用户名与密码,给出登录失败的消息如图3athens.3所示。
图3.3 未注册账号登录页面
4、接下来用账号50000像服务器发送一个文件,图3.5给出了客户机监控的文件发送过程和数字签名与密钥等信息,图3.6给出了服务器接收文件过程和解密过程。
3.5 客户机发送SSL加密文件过程
图3.6 服务器接收文件过程和解密过程
图3.7最终结果图
五、源代码
1、服务器处理连接线程
    private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {                         
             
        // TODO add your handling code here:
        try {
            //获取服务器工作地址端口
            String Text();
            int hostPort=Integer.Text());
            //创建UDP数据报套接字,在指定端口侦听
            DatagramSocket serverSocket=new DatagramSocket(hostPort);
            txtArea.append("服务器开始侦听...\n");
            //创建并启动UDP消息接收线程
意大利世界杯冠军            Thread recvThread=new ReceiveMessage(serverSocket,this);
            recvThread.start();
            //创建并启动文件接收线程
        new Thread(new Runnable() {
                public void run() {
                try {
                //获取证书库
                InputStream key =ResourceAsStream("/cn/edu/ldu/keystore/server.keystore");//私钥库
                InputStream tkey =ResourceAsStream("/cn/edu/ldu/keystore/tserver.keystore");//公钥库
                String SERVER_KEY_STORE_PASSWORD = "123456"; //server.keystore密码
                String SERVER_TRUST_KEY_STORE_PASSWORD = "123456";//tserver.keystore密码
                SSLContext ctx = Instance("SSL");//SSL上下文
                KeyManagerFactory kmf = Instance("SunX509");
                TrustManagerFactory tmf = Instance("SunX509");
                KeyStore ks = Instance("JKS");
                KeyStore tks = Instance("JKS");
                //加载私钥证书库
                ks.load(key, SERVER_KEY_CharArray());
                //加载公钥证书库
                tks.load(tkey, SERVER_TRUST_KEY_CharArray());
                kmf.init(ks, SERVER_KEY_CharArray());
                tmf.init(tks);
                ctx.KeyManagers(), TrustManagers(), null);
                //服务器侦听安全连接
                SSLServerSocket sslListenSocket = (SSLServerSocket) ServerSocketFactory().createServerSocket(hostPort);               
                int Runtime().availableProcessors();//CPU数
                ExecutorService wFixedThreadPool(processors*2);//创建固定大小线程池   
                while (true) { //处理所有客户机连接
                    SSLSocket fileSocket=(SSLSocket)sslListenSocket.accept();//如果无连接,则阻塞,否则接受连接并创建新的会话套接字
                    //文件接收线程为SwingWorker类型的后台工作线程
                    SwingWorker<Integer,Object> recver=new RecvFile(fileSocket,ServerUI.this,tks,ks); //创建客户线程
                    ute(recver); //用线程池调度客户线程运行
                }//end while
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), "错误提示", JOptionPane.ERROR_MESSAGE);
                }//end try catch           
                }//end run()
            }).start();               

本文发布于:2023-06-23 08:41:00,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/4/167444.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   加密   公钥   登录   密钥
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图