zoukankan      html  css  js  c++  java
  • 20145334 第五次 java 实验报告

    实验内容
    1.掌握Socket程序的编写;

    2.掌握密码技术的使用;

    3.设计安全传输系统。

    我和20145306张文锦组队编程 http://www.cnblogs.com/besti145306/p/5471075.html 他负责客户端,我负责服务端

    查看ip地址 和端口号占用情况

    TCP内容:
    服务器端代码如下:

    package 实验5;
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class ServerTest
    {      
        public static final int PORT = 8081; 
        public static void main(String[] args)       
                throws IOException   
        {                  
            ServerSocket s = new ServerSocket(PORT);      
            System.out.println("Started:"+s);       
            try         
            {       
                Socket socket = s.accept();    
                try                      
                {                      
                    System.out.println("Connection accepted:"+socket);       
                    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));    
                    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
                    while(true)        
                    {                
                        String str=in.readLine();     
                        if(str.equals("END"))         
                            break;                  
                        System.out.print("Echoing:"+str);        
                        out.println(str);                   
                    }                  
                }                     
                finally                  
                {                         
                    System.out.println("closing...");        
                    socket.close();               
                }                  
            }                
            finally            
            {                        
                s.close();            
            }      
        }
    }
    

    •加密算法

    package Server;
    import java.io.FileInputStream;
    import java.io.ObjectInputStream;
    import java.math.BigInteger;
    import java.security.interfaces.RSAPrivateKey;
    public class Dec_RSA{
        public String decodestring="";
        public Dec_RSA(String ctext) throws Exception{
            BigInteger c=new BigInteger(ctext);
            FileInputStream f=new FileInputStream("Skey_RSA_priv.dat");
            ObjectInputStream b=new ObjectInputStream(f);
            RSAPrivateKey prk=(RSAPrivateKey)b.readObject( );
            BigInteger d=prk.getPrivateExponent();
            BigInteger n=prk.getModulus();
            BigInteger m=c.modPow(d,n);
            byte[] mt=m.toByteArray();
            for(int i=0;i<mt.length;i++){
                decodestring+=(char)(mt[i]);
            }
    
    
        }
    }
    

    服务器端网络编程步骤
    •服务器属于被动等待连接,所以首先要进行监听端口,等待客户端进行连接。
    •在客户端连接之后,服务器就获得一个与客户端之间的连接,二者就可以通过这个连接进行数据交换了。
    •服务器接收到客户端传来的数据之后要进行处理,针对本次实验来说,客户端传来的数据是加密过的,所以服务器需要进行解密的操作:
    •首先要使用服务器端RSA的私钥对DES的密钥进行解密
    •再将十六进制数据转换成十进制
    •之后用解密得到的DES密钥对DES进行解密
    •然后使用解密得到的DES对十进制进制密文数据进行解密
    •最后将得到的十进制明文用“UTF-8”转码成明文字符
    •解密之后得到明文之后还需要验证数据完整性,在这里使用Hash函数来检测。
    •检测成功之后再向客户端返回数据表示匹配成功或者失败
    •最后关闭连接。

    双方匹配成功,并在客户端显示“匹配成功”的消息

  • 相关阅读:
    mysql 练习题
    mysql 语法
    mysql数据库简单练习(创建表格,增删改查数据)
    dom对象基础
    JS定时器
    JS小测验
    JS事件练习题
    JS事件
    dom对象
    tiles介绍
  • 原文地址:https://www.cnblogs.com/bestizwh/p/5471371.html
Copyright © 2011-2022 走看看